三输入字段搜索

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

是否有一个简单的解决方案,同时为三个输入字段的过滤器列表?

要求是3个搜索字段将同时显示和激活,然后用户可以立即搜索三个字段中的任何一个。每次搜索都会自动缩小结果范围。

是否有针对此问题的算法或解决方案?

提前致谢。

android search filter recyclerview-layout
2个回答
1
投票

试试这个,它适用于我的getFilter方法

if (androidVersion.name()(your 1st field).toLowerCase().contains(charString) 
||   androidVersion.id()(your 2nd field).toLowerCase().contains(charString) 
|| androidVersion.number()(your 3rd field).toLowerCase().contains(charString)
{
filteredList.add(androidVersion);
}

1
投票

在您的适配器类中

private ArrayList<MyBean> videoList;//your arrayList
private ArrayList<MyBean> vList;//new list for search view

public Filter getFilter() {

    return new Filter() {
        @Override
        protected FilterResults performFiltering(CharSequence charSequence) {
            String charString = charSequence.toString();
            if (charString.isEmpty()) {
                videoList = vList;
            } else {
                ArrayList<MyBean> filteredList = new ArrayList<>();
                for (MyBean androidVersion : vList) {
                    //you can add your field here
                    if (androidVersion.name()/*(your 1st field)*/.toLowerCase().contains(charString)
                            ||   androidVersion.id()/*(your 2nd field)*/.toLowerCase().contains(charString)
                            || androidVersion.number()/*(your 3rd field)*/.toLowerCase().contains(charString))
                    {
                        filteredList.add(androidVersion);
                    }
                }
                videoList = filteredList;
            }
            FilterResults filterResults = new FilterResults();
            filterResults.values = videoList;
            return filterResults;
        }

        @Override
        protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
            videoList = (ArrayList<MyBean>) filterResults.values;
            notifyDataSetChanged();
        }
    };
}
© www.soinside.com 2019 - 2024. All rights reserved.