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);
Ошибка новичка мной. В любом случае, может быть, кто-то найдет код и обойдет его.