![](/img/trans.png)
[英]set text in searchView after selecting item from searchable suggestion window
[英]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.