1

У меня есть массив элементов Струнные:CursorAdapter не заселять предложения о SearchView

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:

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

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

ответ

0

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

searchView.setSuggestionsAdapter(cursorAdapter); 

Rookie ошибка у меня. В любом случае, может быть, кто-то находит код и полезен.

Смежные вопросы