2015-12-11 2 views
0

Я пытаюсь выполнить автозаследование с помощью searchview в списке. Listview заполняется несколькими элементами в строке. Но OnqueryListener ничего не стреляет.android Search Listview SimpleCursorAdapter не работает

Ниже приведен пример того, как это делается.

cursor = db.getAllRows(); 
     String[] storeFrom = new String[]{SQLiteHandler.KEY_ID, SQLiteHandler.KEY_NAME, SQLiteHandler.KEY_AGE, SQLiteHandler.KEY_GENDER, SQLiteHandler.KEY_HEIGHT, SQLiteHandler.KEY_WEIGHT}; 
     int[] toView = new int[]{R.id.tvId, R.id.tvName, R.id.tvAge, R.id.tvGender, R.id.tvHeight, R.id.tvWeight}; 
     cursorAdapter = new SimpleCursorAdapter(getBaseContext(), R.layout.customlist, cursor, storeFrom, toView, 0); 
     personList = (ListView) findViewById(R.id.listView); 
     personList.setAdapter(cursorAdapter); 
     searchText = (SearchView) findViewById(R.id.search); 
     searchText.setOnQueryTextListener(new OnQueryTextListener() { 

      @Override 
      public boolean onQueryTextSubmit(String text) { 
       return false; 
      } 

      @Override 
      public boolean onQueryTextChange(String text) 
      { 
       cursorAdapter.getFilter().filter(text); 
       cursorAdapter.notifyDataSetChanged(); 
       return false; 
      } 
     }); 
+0

Для одного, вы должны возвращаться 'true', если обрабатываются эти события. – cziemba

+1

Я уверен, что вы должны установить адаптер и «OnQueryTextListener» в объект «SearchView» ... Возможно, я ошибаюсь. – ElliotM

+0

все ypu нужно сделать, это настроить FilterQueryProvider – pskink

ответ

0

Я думаю, что и должен стрелять запросы к базе данных каждый раз, когда в методе OnQueryTextChange и чем называть NotifyDataSetChange методы(). Такая же проблема была со мной, и я решил это с этим. Вот код, отрезанный;

@Override 
    public boolean onQueryTextChange(String newText) { 
     // TODO Auto-generated method 

     if (!newText.trim().isEmpty()) { 
Cursor cursor = dbHelper 
       .searchByBrandText((newText != null ? newText: "@@@@")); 

     if (cursor != null) { 
if (cursor.moveToFirst()) { 
       do { 
        brandOrCompositionNameArray.add(cursor.getString(0)); 

       } while (cursor.moveToNext()); 
} customAdapterSuggestiveListView = new CustomAdapterSuggestiveListView(
        SearchActivity.this, brandOrCompositionNameArray); 
      brandOrcompositionNameList 
        .setAdapter(customAdapterSuggestiveListView); 
}} 
+0

вы можете дать образец, если бы вы могли – Rohin

+1

Я не думаю, что это так, OP говорит, что 'onQueryTextChange' не вызывается. – cziemba

-1

SearchView, который будет работать для вас youtube,

Если listAdapter распространяется на базовый адаптер, пожалуйста, следуйте этим Link

+0

ссылки могут быть повреждены или видео не найдено через некоторое время –

+0

[YouTube (https://www.youtube.com/watch?v=rhNZpFdLJFQ)](https://www.youtube.com/watch?v=rhNZpFdLJFQ) – asadnwfp

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