Skip to content Skip to sidebar Skip to footer

Filter On Listview Disappear Listitems While Entering Something Into Edittext

I am suffering a weird problem. Actually I have a customize listview in which I am using a filter, everything working fine but when I am typing a text to edittext it disappear the

Solution 1:

As you are using custom adapter, android cant recognize "MainActivity.this.adapter.getFilter().filter(cs);"

You have to override getFilter() method and do manual changes.

Checkout below code :

@OverridepublicFiltergetFilter() {
    Filter filter = newFilter() {

        @SuppressWarnings("unchecked")
        @OverrideprotectedvoidpublishResults(CharSequence constraint,FilterResults results) {


            mDisplayedValues = (ArrayList<HashMap<String, String>>) results.values; // has the filtered valuesnotifyDataSetChanged();  // notifies the data with new filtered values
        }

        @OverrideprotectedFilterResultsperformFiltering(CharSequence constraint) {
            FilterResults results = newFilterResults();        // Holds the results of a filtering operation in valuesArrayList<HashMap<String, String>> FilteredArrList = newArrayList<HashMap<String, String>>();

            if (mOriginalValues == null) {
                mOriginalValues = newArrayList<HashMap<String, String>>(mDisplayedValues); // saves the original data in mOriginalValues

            }

            /********
             * 
             *  If constraint(CharSequence that is received) is null returns the mOriginalValues(Original) values
             *  else does the Filtering and returns FilteredArrList(Filtered)  
             *
             ********/if (constraint == null || constraint.length() == 0) {

                // set the Original result to return  
                results.count = mOriginalValues.size();
                results.values = mOriginalValues;
            } else {
                constraint = constraint.toString().toLowerCase();
                for (int i = 0; i < mOriginalValues.size(); i++) {

                    String data = mOriginalValues.get(i).get("name");

                    if (data.toLowerCase().startsWith(constraint.toString())) {
                        HashMap<String, String> hmap=newHashMap<String, String>();
                        hmap.put("name", mOriginalValues.get(i).get("name"));
                        hmap.put("image", mOriginalValues.get(i).get("image"));
                        FilteredArrList.add(hmap);
                        Log.e("DEBUG", "name : "+data);
                    }
                }
                // set the Filtered result to return
                results.count = FilteredArrList.size();
                results.values = FilteredArrList;
            }
            return results;
        }
    };
    return filter;
}

and use it in your adapter getView()

 holder.name.setText(mDisplayedValues.get(position).get("name")); 

Post a Comment for "Filter On Listview Disappear Listitems While Entering Something Into Edittext"