Три поля ввода поиска - PullRequest
       13

Три поля ввода поиска

0 голосов
/ 11 марта 2019

Существует ли простое решение списка фильтров для трех полей ввода одновременно?

Требуется, чтобы 3 поля поиска отображались и были активными одновременно, тогда пользователь может искать ЛЮБОЙ из трех полей.поля сразу.Каждый поиск автоматически сужает результаты.

Есть ли какой-либо алгоритм или решение для этой проблемы?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 12 марта 2019

В вашем классе адаптера

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();
        }
    };
}
1 голос
/ 11 марта 2019

Попробуйте, у меня это работает. В вашем методе 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);
}
...