Здравствуйте. Я использую 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);
}