我有一个SearchView和一个ListView。我正在使用以下代码来过滤onCreate
方法
ListAdapter listAdapter = new ListAdapter(this, ChainageFactory.getAllListViewItems());
listView.setAdapter(listAdapter);
listView.setTextFilterEnabled(true);
filter = listAdapter.getFilter();
searchView.setIconifiedByDefault(false);
searchView.setOnQueryTextListener(this);
searchView.setSubmitButtonEnabled(true);
searchView.setQueryHint("Search Here");
以下是我的onQueryTextChange和onQueryTextSubmit方法。
@Override
public boolean onQueryTextChange(String newText) {
if (TextUtils.isEmpty(newText)) {
filter.filter(null);
} else {
filter.filter(newText);
}
return true;
}
public boolean onQueryTextSubmit(String query) {
return false;
}
我的ListView包含以下项目。
如果用户键入DI或AI,我可以过滤ListView项目但是如果用户键入D7后跟空格,如果用户键入K7后跟空格,则不会过滤ListView项目,尽管有项目包含这些项目字符。我怎样才能解决这个问题?
答案 0 :(得分:2)
Tyring将.trim()放入你的函数中。对我而言,它运作良好。
答案 1 :(得分:1)
对实际列表执行过滤,而不是listAdapter
@Override
public boolean onQueryTextChange(String newText) {
for(int i = 0; i < ChainageFactory.getAllListViewItems().size(); i++){
if (TextUtils.isEmpty(newText)) {
filter.filter(null);
} else {
String itemName = ChainageFactory.getAllListViewItems().YourItem();
if(itemName.contains(newText)){
//Perform your operation with filtered data
}
}
}
return true;
}
public boolean onQueryTextSubmit(String query) {
return false;
}