我正在尝试从CustomListView
实现Filterable
中搜索BaseAdapter
,但它提供了重复的搜索数据..
@Override
public Filter getFilter() {
// TODO Auto-generated method stub
// Here myList contains Original data
return new MyFilter(myList);
}
private class MyFilter extends Filter {
List<ListModel> myValues;
public MyFilter(List<ListModel> list) {
// TODO Auto-generated constructor stub
myValues = new ArrayList<ListModel>(list);
}
@Override
protected FilterResults performFiltering(CharSequence constraint) {
// TODO Auto-generated method stub
FilterResults results = new FilterResults();
List<ListModel> temp = new ArrayList<ListModel>();
if (TextUtils.isEmpty(constraint)) {
if (temp.size() > 0)
temp.clear();
temp.addAll(myValues);
}
else {
for (ListModel model : myValues) {
if (model.getNames().toLowerCase.contains(constraint.toString().toLowerCase()))
temp.add(model);
}
}
results.values = temp;
results.count = temp.size();
return results;
}
@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint,
FilterResults results) {
// TODO Auto-generated method stub
if (results != null && results.count > 0) {
myList.clear();
myList.addAll((List<ListModel>) results.values);
} else
myList.addAll(myValues);
mAdapter.notifyDataSetChanged();
}
}
我没有找到我犯错的地方,搜索工作完美,但它向我的自定义列表视图添加了更多数据..
例子
假设我搜索“印度”,然后它将整个列表视图数据添加为“印度”。如果我的列表视图包含 10 行的大小,则它与“印度”组成 20 行
任何帮助,将不胜感激。