2016-09-22 53 views
0

我有一个SearchView和一个ListView。我用下面的代码在我onCreate方法SearchView不过滤带有空格的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"); 

继过滤的ListView项目是我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 K7300毫米直径
  2. DIK70300-DI K7400毫米直径
  3. AIK70300-DI D7450毫米直径
  4. AIK70300-DI D7500毫米直径

林如果用户键入DI或AI,则可以过滤ListView项目,但如果用户键入D7,后跟空格键(如果用户键入K7后跟空格键),则不会过滤ListView项目,尽管存在具有这些字符的项目。我怎样才能解决这个问题?

回答

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; 
} 
2

Tyring将.trim()放入函数中。对我来说,它运作良好。

相关问题