Как сохранить состояние чипа в фильтруемом RecyclerView? - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть recyclerView с Chips, и реализуем Filterable, для этого RecyclerViewAdapter я устанавливаю Chip состояние isSelected, когда пользователь нажимает на него, но после того, как пользователь использует вид поиска, чтобы выбрать другой чип это refre sh все состояния чипов

onChipClickListener на чипе:

        currentItemName(//it is Chip).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if (currentItemName.isSelected()) {

                currentItemName.setChipBackgroundColorResource(R.color.colorChipUnchecked);
                currentItemName.setTextColor(mContext.getResources().getColor(R.color.colorTextChipUnchecked));

                Toast.makeText(mContext, currentItemName.getText().toString(), Toast.LENGTH_SHORT).show();

                currentItemName.setSelected(false);


            } else {


                currentItemName.setChipBackgroundColorResource(R.color.colorAccentBlue);

                currentItemName.setTextColor(mContext.getResources().getColor(R.color.colorWhite));

                currentItemName.setSelected(true);

                String string = currentItemName.getText().toString().toLowerCase();



            }
        }
    });

Методы фильтрации:

@Override
public Filter getFilter() {
    return exampleFilter;
}

private Filter exampleFilter = new Filter() {
    @Override
    protected FilterResults performFiltering(CharSequence constraint) {
        List<ModelChip> filteredList = new ArrayList<>();

        if(constraint == null || constraint.length() == 0){
            filteredList.addAll(mListAll);
        }
        else {
            String filterPattern = constraint.toString().toLowerCase().trim();

            for (ModelChip item : mListAll){
                if (item.getText().toLowerCase().contains(filterPattern)){
                    filteredList.add(item);
                }
            }
        }
        FilterResults results = new FilterResults();
        results.values = filteredList;

        return results;
    }

    @Override
    protected void publishResults(CharSequence constraint, FilterResults results) {
        mList.clear();
        mList.addAll((Collection<? extends ModelChip>) results.values);
        notifyDataSetChanged();
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...