Liste Filtresi Görünümü Android
Android bir liste görünümü oluşturdum ve yukarıdaki listede metin düzenleme ve kullanıcı kullanıcı girişi göre listeye filtre olacak metin girin eklemek istiyorum
kimse bana listeyi filtrelemek için bir yol varsa lütfen söyleyin adaptör android ?
CEVAP
Evet. Aml düzeni dosyası içinde liste görünümü üzerine bir EditText ekleyin. Ve aktivitede/parça..
lv = (ListView) findViewById(R.id.list_view);
inputSearch = (EditText) findViewById(R.id.inputSearch);
// Adding items to listview
adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.product_name, products);
lv.setAdapter(adapter);
inputSearch.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
// When user changed the Text
MainActivity.this.adapter.getFilter().filter(cs);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { }
@Override
public void afterTextChanged(Editable arg0) {}
});
Temel burada bir eklemeOnTextChangeListenermetninizi düzenlemek ve geri arama yöntemi filtre liste görünümü adaptörü için geçerli içinde.
EDİT
Özel BaseAdapter size filtre almak"ll uygulamak gerekirEdilebilirarayüzü.
class CustomAdapter extends BaseAdapter implements Filterable {
public View getView(){
...
}
public Integer getCount()
{
...
}
@Override
public Filter getFilter() {
Filter filter = new Filter() {
@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
arrayListNames = (List<String>) results.values;
notifyDataSetChanged();
}
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
ArrayList<String> FilteredArrayNames = new ArrayList<String>();
// perform your search here using the searchConstraint String.
constraint = constraint.toString().toLowerCase();
for (int i = 0; i < mDatabaseOfNames.size(); i ) {
String dataNames = mDatabaseOfNames.get(i);
if (dataNames.toLowerCase().startsWith(constraint.toString())) {
FilteredArrayNames.add(dataNames);
}
}
results.count = FilteredArrayNames.size();
results.values = FilteredArrayNames;
Log.e("VALUES", results.values.toString());
return results;
}
};
return filter;
}
}
İçinde() perfromFilteringarama veritabanındaki değerler için sorgu gerçek bir karşılaştırma yapmak gerekir. Onun sonuç geçecektir() publishResultsyöntem.
Nasıl Android Liste Görünümü ayırıcı ç...
Nasıl Android liste görünümü yenilemek...
Android: liste görünümü tıklatın devre...
Liste görünümü Öğeleri arasındaki boşl...
Farklı bir düzen ile Android liste Gör...