如何解决从编辑文本过滤列表视图
| 我有一个编辑文本作为搜索栏,还有一个列表视图可以过滤我键入的文本,但不幸的是,它不过滤列表视图。我已将自定义数组适配器与对象Friend一起使用。朋友对象具有名称,地址和电话号码,但我只想过滤其名称。在我的活动中...searchBarTextView.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s,int start,int before,int count) {
friendListAdapter.getFilter().filter(s);
}}
在适配器中时...
@Override
公共过滤器getFilter(){
Log.d(TAG,\“开始getFilter \”);
if(newFilter == null){
newFilter = new Filter(){
@Override
受保护的void publishResults(CharSequence约束,FilterResults结果){
// TODO自动生成的方法存根
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;
}
有人可以帮我如何正确显示过滤后的阵列适配器吗?我认为notifyDataSetChanged没有被调用。谢谢。
解决方法
我的问题解决了,发现我必须重写getCount()和getItem()。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。