问题
I have to add search functionality on Edittext items in listview are coming from baseadapter I am using this code but .getFilter().filter(s.toString()); is not coming
My Code is:
approvedfriendList.setAdapter(new ApprovedList());
//*********Search Functionality in Approved Friend List************************
serch_item.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
// approvedfriendList.getFilterTouchesWhenObscured().f
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
approvedfriendList is ArrayList
I am not getting how to use here .getFilter().filter(s.toString()); with ApprovedList()(Base Adapter Class )
回答1:
First you should enable your list view for filtering by adding this line of code :
list.setTextFilterEnabled(true);
then simply add a text watcher in your text view :
text.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
adapter.getFilter().filter( s.toString());
list.setAdapter(adapter);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable prefix) {
}
});
回答2:
I implemented a search of contacts in my app. Followimg is a part of the code:
searchContacts.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
temp.clear();
for (int i = 0; i < emailIds.size(); i++) {
if (emailIds.get(i).toLowerCase().startsWith(s.toString())) {
temp.add(emailIds.get(i));
}
}
Collections.sort(temp);
contacts.notifyDataSetChanged();
for (int i = 0; i < temp.size(); i++) {
if (sqlHandler.isChecked(temp.get(i))) {
lvContacts.setItemChecked(i, true);
} else {
lvContacts.setItemChecked(i, false);
}
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
}
});
来源:https://stackoverflow.com/questions/16536663/how-to-add-search-functionality-on-list-view-items-in-listview-are-from-baseadap