android - CursorAdapter 没有填充 SearchView 的建议

标签 android adapter searchview android-cursoradapter search-suggestion

我有一个字符串元素数组:

suggestion_name = new String[main_data.getJSONArray("cafe").length()];

由一些 JSON 数据填充:

        for (int i=0; i<suggestion_name.length;i++){

        suggestion_name[i] = main_data.getJSONArray("cafe").getJSONObject(i).getString("name");

        }

当我调试时,我看到 suggestion_name 数组中有 2 个元素,这里一切正常。然后我按如下方式创建我的建议适配器:

public void set_suggestion_adapter_array(){
    String[] from = new String[] {"cafe_name"};
    int[] to = new int[] {R.id.suggestionTextView};
    cursorAdapter = new SimpleCursorAdapter(a,
            R.layout.suggestions_single_item,
            null,
            from,
            to,
            CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
}

并像这样填充建议列表:

public void populate(String text){
    MatrixCursor matrixCursor = new MatrixCursor(new String[]{ BaseColumns._ID, "cafe_name" });
    for (int i=0; i<suggestion_name.length; i++) {
        if (suggestion_name[i].toLowerCase().startsWith(text.toLowerCase()))
            matrixCursor.addRow(new Object[] {i, suggestion_name[i]});
    }
    cursorAdapter.changeCursor(matrixCursor);
    cursorAdapter.notifyDataSetChanged();
}

我在 onQueryTextChange 中调用 populate() 方法:

searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            // search database for query
            getDataMap.search(query);
            return true;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            // show suggestions
            getDataMap.populate(newText);

            return true;
        }
    });

然而,当我开始在搜索字段中输入建议数组的元素时,我没有收到任何建议。我调试了几次,看看我的代码是否没有被及时调用/根本没有被调用,但一切都按顺序完美运行。我的数组元素不包含任何奇怪的字母、符号等。我在这里缺少什么?谢谢。

最佳答案

啪!我忘了设置适配器。

searchView.setSuggestionsAdapter(cursorAdapter);

我的菜鸟错误。无论如何,也许有人会发现代码并变通有用。

关于android - CursorAdapter 没有填充 SearchView 的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38340728/

相关文章:

java - 以编程方式创建的布局底部的按钮

android - NotifyDataSetChanged 在带有 Viewpager2 的 FragmentStateAdapter 中不起作用

java - 将 RecyclerView 中的项目更改为 onBindViewHolder

android - Hello 的问题, View : List View tutorial

android - 用于 Gson 的 POJO 是否可以重用于与 Room 一起使用的类

android - 任何(粗略的)相当于 iOS NSLinguisticTagger for android?

java - Fragment中使用ListView时适配器不调用getView()

android - 如何在简单游标适配器上实现搜索?

java - 从操作栏中过滤 fragment 适配器

android - ActionBar 中 SearchView 的主题