CursorAdapter не заполняет предложения SearchView

У меня есть массив элементов String:

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

        }

Когда я отлаживаю, я вижу, что в массиве offertion_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();
}

Я вызываю метод populate() в onQueryTextChange:

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

Тем не менее, когда я начинаю вводить элементы моего массива предложений в поле поиска, я не получаю никаких предложений. Я отлаживал несколько раз, чтобы увидеть, не вызывается ли какой-либо мой код вовремя / вообще, но все работает идеально по порядку. Мои элементы массива не содержат нечетных букв, символов и т. Д. Что мне здесь не хватает? Благодарю.

1 ответ

Щелчок! Я забыл установить адаптер.

searchView.setSuggestionsAdapter(cursorAdapter);

Ошибка новичка мной. В любом случае, может быть, кто-то найдет код и обойдет его.

Другие вопросы по тегам