getFilter () не работает должным образом в адаптере RecyclerView? - PullRequest
0 голосов
/ 14 декабря 2018

У меня getFilter в моем recyclerView классе адаптеров.Это не работает должным образом, если я ищу имя, которое начинается с 'A', в результатах списка нет изменений.Предположим, я ищу имя, начинающееся с 'S', имя придет в начало списка.Также я пытаюсь сделать то же самое с номером телефона и пин-кодом.Это ничего не показывает.Это то, что я пытаюсь:

 EditText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
        }

        @Override
        public void afterTextChanged(Editable s) {
            if(adapter!=null){
                adapter.getFilter().filter(s);
            }
        }
    });

Этот код выше я использовал для отправки символов, чтобы получить метод фильтрации:

     @Override
public Filter getFilter() {
     return new Filter() {
         @Override
         protected FilterResults performFiltering(CharSequence constraint) {
             String charString = constraint.toString().toLowerCase();
             if(charString.isEmpty()){
                 mDataFiltered = mData;
             }
             else{

                 List<Guru> filteredList  = new ArrayList<Guru>();
                 for(Guru row:mData){
                     if(row.getName().toLowerCase().contains(charString) ||
                        row.getMobile().contains(charString) || row.getOfficePincode().contains(charString)|| row.getHomePincode().contains(charString) ){
                         filteredList.add(row);
                     }
                 }
                 mDataFiltered = filteredList;

             }
             FilterResults filterResults = new FilterResults();
             filterResults.values = mDataFiltered;
             return filterResults;
         }

         @Override
         protected void publishResults(CharSequence constraint, FilterResults results) {
             if(results.values!=null){
                 mDataFiltered = (List<Guru>) results.values;
                 notifyDataSetChanged();
             }
         }
     };

Здесь я делаю функцию фильтра.Если вы знаете ошибку, просто пингуйте меня.

...