Android, RecyclerView. Как разрешить клик по элементу во время notifyDataSetChanged()?

Здравствуйте. Я использую RecyclerView адаптер для вывода элементов с ProgressBar. Соответственно код достаточно часто вызывает notifyDataSetChanged() и в это время пользователь не может кликнуть и тем самым открыть элемент, так как происходить перерисовка ViewHolder и OnClickListener не действует. Возможно ли решить данную проблему? Конечно я бы мог использовать notifyItemChanged() (с ним проблем нет), но в адаптере используется HashMap с ключами String, и будут некоторые проблемы с получением элемента в onBindViewHolder() по позиции в адаптере.
Вот пример кода:
public ViewHolder(View itemView, ClickListener listener)
       {
            super(itemView);

            this.listener = listener;
            itemView.setOnClickListener(this);
            itemView.setOnLongClickListener(this);

            ...
       }

        ...

       @Override
        public void onClick(View view)
        {
            int position = getAdapterPosition();

            if (listener != null && position >= 0) {
                Item item = items.get(position);
                listener.onItemClicked(position, item);
            }
        }

        @Override
        public boolean onLongClick(View view)
        {
            int position = getAdapterPosition();

            if (listener != null && position >= 0) {
                Item item = items.get(position);
                listener.onItemLongClicked(position, item);

                return true;
            }

            return false;
        }

        public interface ClickListener
        {
            void onItemClicked(int position, Item item);

            boolean onItemLongClicked(int position, Item item);
        }
  • Вопрос задан
  • 690 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы