【问题标题】:SearchView: Getting the selected item from the suggestion listenerSearchView:从建议侦听器中获取所选项目
【发布时间】:2015-06-14 15:58:10
【问题描述】:

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

【问题讨论】:

标签: android android-arrayadapter simplecursoradapter searchview matrixcursor


【解决方案1】:

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

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;
    }
});

【讨论】:

    【解决方案2】:

    位置带来建议列表选中项的位置。如果您的建议列表是 Cursor(我可能认为是 ExceptionMatrixCursor),则您必须获取位于光标位置的项目。

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

    columnOfTheItemStringInTheMatrix 是您在创建矩阵并添加行时分配的列号。例如:

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

    当您添加一行时(一个新项目到 MatrixCursor):

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

    然后columnOfTheItemStringInTheMatrix = 0;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-31
      • 1970-01-01
      • 1970-01-01
      • 2021-10-22
      • 2020-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多