EditText с фильтром - PullRequest
       0

EditText с фильтром

0 голосов
/ 29 марта 2020

в моем приложении у меня есть текст редактирования, а просмотрщик содержит много предложений. когда пользователь что-то пишет в редактировании, он получает отфильтрованные предложения в обзоре переработчика. он также может выбрать много вариантов из окна повторного просмотра (множественный выбор), но когда он выбирает один вариант и пытается что-то написать снова, он не может получить предложения в зависимости от нового написания. Как я могу фильтровать каждый раз, когда пользователь пишет пространство. вот код фрагмента:

searchable.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                String s = charSequence.toString();
                String[]splitted = s.split("-");
                if(splitted.length == 0){
                    mAdapter.getFilter().filter(charSequence);
                }else{
                   // mAdapter.getFilter().filter(splitted[splitted.length-1]);
                }

                recyclerView.setVisibility(view.VISIBLE);
            }
            @Override
            public void afterTextChanged(Editable editable) {

            }
        });

, а вот код адаптера просмотра переработчика:

....

@Override
public Filter getFilter() {
    return new Filter() {
        @Override
        protected FilterResults performFiltering(CharSequence charSequence) {
            String charString = charSequence.toString();
           //String[]splitted = charString.split("-");
            if (charString.isEmpty()){
                suggestListFiltered = suggestList;
            }else{
                List<Item> filteredList = new ArrayList<>();
                for (Item row : suggestList) {
                    if (row.getText().toLowerCase().contains(charString.toLowerCase())) {
                        filteredList.add(row);
                    }
                }
                /////// TODO :: should be update
                suggestListFiltered = filteredList;
                ////////////////////////////////
            }

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

        @Override
        protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
            suggestListFiltered = (ArrayList<Item>) filterResults.values;
            notifyDataSetChanged();
        }
    };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...