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 包含以下项目。

  1. DIK70300-DI K7 300 毫米直径
  2. DIK70300-DI K7 400 毫米直径
  3. AIK70300-DI D7 450 毫米直径
  4. 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;
}