2015-03-24 3 views
0

Я просто потерялся. Я заполняю базу данных, используя SimpleCursorAdapter до listview. Я хотел бы отфильтровать его с помощью EditText, но каждый вопрос/код/​​пример/учебник просто не работает для меня. Но я видел, что многие используют ArrayAdapter. Вопрос в том, могу ли я заполнить список с помощью SimpleCursorAdapter, и они фильтруют его с помощью EditText с ArrayAdapter?SimpleCursorAdapter/ArrayAdapter заполняет базу данных и фильтрует список просмотров

ответ

-1

Вы должны использовать метод фильтрации для фильтра с edittext.Like выше,

kisiText.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, 
       int count) { 
      if(s.toString().isEmpty()){ 
       kisiInfoList.clear(); 
       listeyiCek(); 
       adapter = new RehberListAdapter(RehberActivity.this, kisiInfoList); 
       rehberListView.setAdapter(adapter); 
      } 
     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      adapter.getFilter().filter(s.toString()); 

     } 
    }); 

А вот метод фильтр, который включает в себя адаптер,

@Override 
public Filter getFilter() { 
    return new Filter() { 
     @SuppressWarnings("unchecked") 
     @Override 
     protected void publishResults(CharSequence constraint, 
       FilterResults results) {   

      if (results.count == 0) 
       notifyDataSetInvalidated(); 
      else { 
       kisiList = (List<Kisi>) results.values; 
       notifyDataSetChanged(); 
      } 
     } 

     @Override 
     protected FilterResults performFiltering(CharSequence constraint) { 
      FilterResults results = new FilterResults(); 
      if (constraint == null || constraint.length() == 0) { 
       results.values = kisiList; 
       results.count = kisiList.size(); 
      } else { 
       List<Kisi> nPlanetList = new ArrayList<Kisi>(); 

       for (Kisi p : kisiList) { 
        if (p.getAdSoyad() 
          .toUpperCase() 
          .startsWith(constraint.toString().toUpperCase())) 
         nPlanetList.add(p); 
       } 

       results.values = nPlanetList; 
       results.count = nPlanetList.size(); 

      } 
      return results; 
     } 
    }; 
} 

При вводе текста он фильтрации и ограничивая ваш listView

+0

Я пробовал это, но я получал ошибку, что метод ссылается на нестатические. Я попытался настроить ваш пример на свой код, но, к сожалению, еще не успел. Я разместил мой, может быть, вы можете дать мне подсказку. Благодарю. – Piotr

+0

Используйте baseadapter вместо SimpleCursorAdapter. Потому что это легко для будущих версий. Также он будет выполнен – emreturka

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