簡體   English   中英

SearchView:從建議監聽器獲取所選項目

[英]SearchView: Getting the selected item from the suggestion listener

我有一個搜索視圖,其中包含由MatrixCursor填充的建議(因為我已經有一個字符串數組)。 但是我想知道用戶正在選擇哪個項目。 到目前為止,我只能獲得用戶點擊建議列表的位置:

searchView.setOnSuggestionListener(new SearchView.OnSuggestionListener() {
        @Override
        public boolean onSuggestionClick(int position) {
            String selectedItem = (String)mAdapter.getItem(position);
            Log.e("search view", selectedItem);
            return true;
        }

但是我有一個錯誤:android.database.MatrixCursor無法轉換為java.lang.String,我不知道如何解決它。 非常感謝任何幫助。

如果有人仍在尋找答案。 使用此代碼。

searchView.setOnSuggestionListener(new SearchView.OnSuggestionListener() {

    @Override
    public boolean onSuggestionSelect(int position) {
        return true;
    }

    @Override
    public boolean onSuggestionClick(int position) {
        Cursor cursor= searchView.getSuggestionsAdapter().getCursor();
        cursor.moveToPosition(position);
        String suggestion =cursor.getString(2);//2 is the index of col containing suggestion name.
        searchView.setQuery(suggestion,true);//setting suggestion
        return true;
    }
});

該位置帶來建議列表選擇項目位置。 如果您的建議名單是Cursor (從Exception可能我認為這是一個MatrixCursor ),你必須讓那就是在光標的位置處的項目。

public boolean onSuggestionClick(int position) {
    Cursor searchCursor = mySearchViewAdapter.getCursor();
    if(searchCursor.moveToPosition(position)) {
        String selectedItem = searchCursor.getString(columnOfTheItemStringInTheMatrix);
    }
}

columnOfTheItemStringInTheMatrix是您在創建Matrix並添加行時分配的列號。 例如:

MatrixCursor c = new MatrixCursor("item"});

當你添加一行(一個新項目到MatrixCursor)時:

String item =  "myItem";
c.addRow(new Object[]{item});

然后columnOfTheItemStringInTheMatrix = 0 ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM