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"