Только что проверил этот код, я не вижу никаких миганий:
закрытый класс CustomAdapter расширяет RecyclerView.Adapter {
private List<Boolean> data = new ArrayList<>();
public void updateData(List<Boolean> data) {
this.data.clear();
this.data.addAll(data);
notifyDataSetChanged();
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list_view, parent, false);
return new ViewHolder(view);
}
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
holder.view.setBackgroundColor(data.get(position) ? getColor(R.color.colorAccent) : getColor(R.color.black));
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
data.set(position, !data.get(position));
CustomAdapter.this.notifyItemChanged(position);
}
});
}
@Override
public int getItemCount() {
return data.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private final ImageView view;
public ViewHolder(View itemView) {
super(itemView);
view = itemView.findViewById(R.id.image);
}
}
}
Проблема должна быть либо в модели, либо на стороне обзора. Я предлагаю использовать модель в качестве единственного источника для состояния просмотра.