ListView 中的 SearchView 也可以通过 "hidden" 个关键字进行搜索

SearchView in ListView search also by "hidden" keywords

我想请您指点一下在哪里可以找到我的问题的解决方案,因为谷歌搜索过去几个小时没有帮助。

我有 SearchViewExpandableListView,一切正常。 对于我的每个列表 (Strings),我想添加不会显示但可搜索的关键字。

例如,如果我们有一个水果列表:

-Apple
-Banana 
-Orange

...

我想为他们分配隐藏的关键字,例如:

-Apple (healthy)
-Banana (tasty)
-Orange (sour)

所以当我输入 SearchView: "healthy" 时,它只会显示 Apple。

我的一些代码(SearchView):

  SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
  search = (SearchView) findViewById(R.id.search);
  search.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
  search.setIconifiedByDefault(false);
  search.setOnQueryTextListener(this);
  search.setOnCloseListener(this);

ArrayList:

  ArrayList<Fruit> fruitList = new ArrayList<Fruit>();
  Fruit fruit = new Fruit("Apple", R.drawable.apple);
  fruitList.add(fruit);
  fruit = new Fruit("Orange", R.drawable.orange);
  fruitList.add(fruit);
  fruit = new Fruit("Banana", R.drawable.banana);
  fruitList.add(fruit);

  Basket basket = new Basket("Yes",basketList);
  basketList.add(basket);

  fruitList = new ArrayList<Fruit>();
  Fruit fruit = new Fruit("Peach", R.drawable.peach);
  fruitList.add(fruit);
  fruit = new Fruit("Pineapple", R.drawable.pineapple);
  fruitList.add(fruit);
  fruit = new Fruit("Coconut", R.drawable.coconut);
  fruitList.add(fruit);

  Basket basket = new Basket("No",basketList);
  basketList.add(basket);

  ...

search.setOnQueryTextListener(这个);

您需要展示您的实现。基本上,它会调用这个函数:

 @Override public boolean onQueryTextSubmit(String query){
    // IMPLEMENT HERE
 }

这就是你处理事情的地方。您不仅要根据名称检查查询,还要检查 "hidden" 关键字,这些关键字可能在 Fruit class.