SearchView 没有过滤带空格的 ListView 项目
SearchView is not filtering the ListView items with spaces
我有一个 SearchView 和一个 ListView。我正在使用以下代码在我的 onCreate
方法
中过滤 ListView 项目
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 包含以下项目。
- DIK70300-DI K7 300 毫米直径
- DIK70300-DI K7 400 毫米直径
- AIK70300-DI D7 450 毫米直径
- AIK70300-DI D7 500 毫米直径
如果用户键入 DI 或 AI,我可以过滤 ListView 项目,但如果用户键入 D7 后跟 space 或者如果用户键入 K7 后跟 space,则不能尽管存在具有这些字符的项目,但仍过滤 ListView 项目。我怎样才能解决这个问题?
正在尝试将 .trim() 放入您的函数中。对我来说效果很好。
对您的实际列表执行过滤,而不是 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;
}
我有一个 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 包含以下项目。
- DIK70300-DI K7 300 毫米直径
- DIK70300-DI K7 400 毫米直径
- AIK70300-DI D7 450 毫米直径
- AIK70300-DI D7 500 毫米直径
如果用户键入 DI 或 AI,我可以过滤 ListView 项目,但如果用户键入 D7 后跟 space 或者如果用户键入 K7 后跟 space,则不能尽管存在具有这些字符的项目,但仍过滤 ListView 项目。我怎样才能解决这个问题?
正在尝试将 .trim() 放入您的函数中。对我来说效果很好。
对您的实际列表执行过滤,而不是 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;
}