Filter list view from edit text
10,052
My problem is solved, found out that I have to override getCount() and getItem().
Comments
-
iamtheexp01 almost 2 years
I have an edit text as a search bar and a list view that filters the text that I typed but unfortunately, it doesn't filter the list view. I have used an customize array adapter with object Friend. Friend object has name, address and phone number but I only want to filter its name. In my activity...
searchBarTextView.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { friendListAdapter.getFilter().filter(s); }}
While in adapter...
@Override public Filter getFilter() { Log.d(TAG, "begin getFilter"); if(newFilter == null) { newFilter = new Filter() { @Override protected void publishResults(CharSequence constraint, FilterResults results) { // TODO Auto-generated method stub Log.d(TAG, "publishResults"); notifyDataSetChanged(); }
@Override protected FilterResults performFiltering(CharSequence constraint) { Log.d(TAG, "performFiltering"); constraint = constraint.toString().toLowerCase(); Log.d(TAG, "constraint : "+constraint); List<ChatObject> filteredFriendList = new LinkedList<ChatObject>(); for(int i=0; i<friendList.size(); i++) { Friend newFriend = friendList.get(i); Log.d(TAG, "displayName : "+newFriend.getDisplayName().toLowerCase()); if(newFriend.getDisplayName().toLowerCase().contains(constraint)) { Log.d(TAG, "equals : "+newFriend.getDisplayName()); filteredFriendList.add(newFriend); } } FilterResults newFilterResults = new FilterResults(); newFilterResults.count = filteredFriendList.size(); newFilterResults.values = filteredFriendList; return newFilterResults; } }; } Log.d(TAG, "end getFilter"); return newFilter; }
Could someone please help me how to correctly show the filtered array adapter? I think the notifyDataSetChanged is not invoked. Thanks.
-
SemperFly almost 13 yearsThank you so much. My suspicious was that this was the culprit and this fixed my issue.
-
ninjaneer over 12 yearscould you explain how you override the getCount()? the Filter object doesn't have a count, but the FilterResults object does.
-
Dhaval Khant almost 12 yearsCan you send me link or any referense for listview filter in android