Android 从编辑文本中筛选列表视图
我有一个编辑文本作为搜索栏和一个列表视图来过滤我键入的文本,但不幸的是,它没有过滤列表视图。我使用了一个自定义数组适配器与对象朋友好友对象具有名称、地址和电话号码,但我只想筛选其名称。在我的活动中Android 从编辑文本中筛选列表视图,android,listview,filter,android-edittext,Android,Listview,Filter,Android Edittext,我有一个编辑文本作为搜索栏和一个列表视图来过滤我键入的文本,但不幸的是,它没有过滤列表视图。我使用了一个自定义数组适配器与对象朋友好友对象具有名称、地址和电话号码,但我只想筛选其名称。在我的活动中 searchBarTextView.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) {
searchBarTextView.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
friendListAdapter.getFilter().filter(s);
}}
在适配器中时
@凌驾
公共过滤器getFilter(){
Log.d(标记“begin-getFilter”);
if(newFilter==null){
newFilter=newFilter(){
@凌驾
受保护的void publishResults(CharSequence约束、FilterResults结果){
//TODO自动生成的方法存根
Log.d(标签“publishResults”);
notifyDataSetChanged();
}
@覆盖
受保护的筛选器结果性能筛选(CharSequence约束){
Log.d(标签“performFiltering”);
constraint=constraint.toString().toLowerCase();
Log.d(标签,“约束:”+约束);
List filteredFriendList=新建链接列表();
对于(int i=0;i我的问题解决了,发现我必须重写getCount()和getItem()非常感谢。我怀疑这是罪魁祸首,这解决了我的问题。你能解释一下你是如何重写getCount()的吗?Filter对象没有计数,但FilterResults对象有计数。您能给我发送android中listview筛选器的链接或任何引用吗
@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;
}