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;
}