SearchView不会使用空格过滤ListView项

时间:2016-09-22 07:46:42

标签: android listview searchview android-filterable

我有一个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 mm Dia
  2. DIK70300-DI K7 400 mm Dia
  3. AIK70300-DI D7 450 mm Dia
  4. AIK70300-DI D7 500 mm Dia
  5. 如果用户键入DI或AI,我可以过滤ListView项目但是如果用户键入D7后跟空格,如果用户键入K7后跟空格,则不会过滤ListView项目,尽管有项目包含这些项目字符。我怎样才能解决这个问题?

2 个答案:

答案 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;
}