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行になります。
どんな助けでも感謝されるでしょう。