SearchView:从建议监听器获取所选项目

时间:2015-06-14 15:58:11

标签: android android-arrayadapter simplecursoradapter searchview matrixcursor

我有一个搜索视图,其中包含由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 我不知道如何解决这个问题。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:8)

如果有人仍在寻找答案。使用此代码。

input()

答案 1 :(得分:7)

该位置带来建议列表选择项目位置。如果您的建议列表是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;