SORU
2 ŞUBAT 2013, CUMARTESİ


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
2 ŞUBAT 2013, CUMARTESİ


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ItZWaffleS420

    ItZWaffleS42

    9 EYLÜL 2011
  • KRQE

    KRQE

    6 AĞUSTOS 2007
  • Pituvision

    Pituvision

    11 Mart 2006