Image 1 : before any search performed当搜索功能启动和适配器进行更新定制的ListView删除列表中的项目的每一件事情,除了匹配搜索值
Image 2 : after search performed
public class classBidAdapter extends ArrayAdapter<classBidAttributes>
implements Filterable {
ArrayList<classBidAttributes> data;
Context context;
CustemFilrer filter;
//------this is a snippit of my listview custom adapter related to the search/filter function----------------------------------------------------------
@NonNull
@Override
public Filter getFilter() {
if(filter == null){
filter = new CustemFilrer();
}
return filter;
}
class CustemFilrer extends Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
if(constraint != null && constraint.length()>0){
constraint = constraint.toString();
ArrayList<classBidAttributes> filter = new ArrayList<classBidAttributes>();
for(int i =0; i<data.size();i++){
if(data.get(i).getTitle().contains(constraint)){
classBidAttributes filts = new classBidAttributes(data.get(i).getTitle());
filter.add(filts);
Toast.makeText(Context, "111"+filts, Toast.LENGTH_SHORT).show();
}
}
results.count = filter.size();
results.values=filter;
Toast.makeText(Context, "222"+filter.size() +"/"+filter, Toast.LENGTH_SHORT).show();
}else{
results.count = data.size();
results.values=data;
Toast.makeText(Context, ""+data.size() +"/"+data, Toast.LENGTH_SHORT).show();
}
return results;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
data.clear();
data.addAll((ArrayList<classBidAttributes>) results.values);
notifyDataSetChanged();
}
}
我猜问题是在“data.clear()
,notifyDataSetChanged()
”但我不知道这里有什么错。
我已经添加了图片,解释执行搜索时发生的情况。
hopfully这是这个问题所需的每一件事情,如果你需要检查任何事情问我。
检查我的答案 –
感谢的人就是这样,它的工作就好了 – user3207637