如果删除字符,如何修复过滤器不起作用

问题描述 投票:2回答:1

我已经在适配器中使用DiffUtil实现了过滤器功能。

目前,过滤器起作用了,问题在于,如果我从搜索中删除了字符,它只是返回空列表。

我该如何解决这个问题?

我的过滤器功能:

   @Override
    public Filter getFilter() {
        return new Filter() {
            @Override
            protected FilterResults performFiltering(CharSequence constraint) {
                List<Cars> listResult;
                if (constraint.length() == 0) {
                    listResult = getCurrentList();
                } else  {
                    listResult = getFilteredResults(constraint.toString().toLowerCase());
                }

                FilterResults results = new FilterResults();
                results.values = listResult;
                Log.i("filter", "results results.values" + results.values);

                return results;
            }

            @SuppressWarnings("unchecked")
            @Override
            protected void publishResults(CharSequence constraint, FilterResults results) {
                Log.i("filter", "publishResults started");
                submitList((List<Cars>)results.values);

            }
        };
    }

getFilterResults:
    private List<Cars> getFilteredResults(String constraint) {
        List<Cars> results = new ArrayList<>();
        for (Cars item : getCurrentList()) {
            if (item.getTitle().toLowerCase().contains(constraint)) {
                results.add(item);
            }
        }
        return results;
    }
android recycler-adapter
1个回答
0
投票

您是否正在使用分页库?我很想知道您是从服务器还是从本地会议室数据库中获取数据。关于这个问题,我可能有一个好的解决方案

© www.soinside.com 2019 - 2024. All rights reserved.