我一直在试图找出似乎是什么问题,但是我可以解决它,基本上我正在过滤我的listview,它使用具有图像和文本的自定义适配器。它的作品第一次,例如当活动第一次运行时它拥有所有数据,当我在搜索框中输入内容时,它会对其进行过滤。但是,如果我现在输入其他东西,它不打印任何东西,数组为空,它保存数据。任何建议将不胜感激。
过滤代码片段
@Override
public Filter getFilter() {
Filter filter = new Filter() {
@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
data= (List<Data>) results.values;
notifyDataSetChanged();
}
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
ArrayList<Item> FilteredArrayNames = new ArrayList<Item>();
// perform your search here using the searchConstraint String.
constraint = constraint.toString().toLowerCase();
for (int i = 0; i < data.size(); i++) {
Item dataNames = data.get(i);
if (dataNames.title.toLowerCase().contains(constraint.toString())) {
FilteredArrayNames.add(dataNames);
}
}
results.count = FilteredArrayNames.size();
results.values = FilteredArrayNames;
Log.e("VALUES", results.values.toString());
return results;
}
};
return filter;
}
活动代码片段
text =(SearchView)findViewById(R.id.searchData);
text.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
adapter.getFilter().filter(newText.toString());
return true;
}
});
答案 0 :(得分:0)
尝试在onQueryTextChange()方法中返回false。