Android 使用SearchView过滤RecyclerView中的项目


本文向大家介绍Android 使用SearchView过滤RecyclerView中的项目,包括了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;
    }
});