Android 使用SearchView过滤RecyclerView中的项目
示例
添加filter方法RecyclerView.Adapter:
public void filter(String text) { if(text.isEmpty()){ items.clear(); items.addAll(itemsCopy); } else{ ArrayList<PhoneBookItem> result = new ArrayList<>(); text = text.toLowerCase(); for(PhoneBookItem item: itemsCopy){ //通过姓名或电话匹配 if(item.name.toLowerCase().contains(text) || item.phone.toLowerCase().contains(text)){ result.add(item); } } items.clear(); items.addAll(result); } notifyDataSetChanged(); }
itemsCopy在适配器的构造函数中初始化。itemsCopy.addAll(items)
如果您这样做,只需filter从OnQueryTextListener发信SearchView:
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { adapter.filter(query); return true; } @Override public boolean onQueryTextChange(String newText) { adapter.filter(newText); return true; } });