lon*_*ger 2 android android-arrayadapter simplecursoradapter matrixcursor searchview
我有一个搜索视图,其中包含由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;
}
Run Code Online (Sandbox Code Playgroud)
但是我有一个错误:android.database.MatrixCursor无法转换为java.lang.String,我不知道如何解决它.非常感谢任何帮助.
小智 9
如果有人仍在寻找答案.使用此代码.
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;
}
});
Run Code Online (Sandbox Code Playgroud)
该位置带来建议列表选择项目位置.如果您的建议列表是Cursor(Exception我可能认为是a MatrixCursor),您必须获取位于Cursor位置的项目.
public boolean onSuggestionClick(int position) {
Cursor searchCursor = mySearchViewAdapter.getCursor();
if(searchCursor.moveToPosition(position)) {
String selectedItem = searchCursor.getString(columnOfTheItemStringInTheMatrix);
}
}
Run Code Online (Sandbox Code Playgroud)
columnOfTheItemStringInTheMatrix是您在创建Matrix并添加行时分配的列号.例如:
MatrixCursor c = new MatrixCursor("item"});
Run Code Online (Sandbox Code Playgroud)
当你添加一行(一个新项目到MatrixCursor)时:
String item = "myItem";
c.addRow(new Object[]{item});
Run Code Online (Sandbox Code Playgroud)
那么columnOfTheItemStringInTheMatrix = 0;
| 归档时间: |
|
| 查看次数: |
3907 次 |
| 最近记录: |