Если у нас есть RecyclerView
, у которого будут представления различного типа, мы можем раздуть представление, которое нам нужно, на основе типа элемента, например
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int type) {
View view = null;
switch (type) {
case TYPEX:
view = LayoutInflater
.from(viewGroup.getContext())
.inflate(R.layout.typex, viewGroup, false);
return new ViewHolderX(view);
case TYPEY:
view = LayoutInflater
.from(viewGroup.getContext())
.inflate(R.layout.typey, viewGroup, false);
return new ViewHolderY(view);
}
return null;
}
Пока все хорошо. В этом случае представления можно повторно использовать в представлении ViewHolder
. Вопрос:
Если в представлении TYPEX
есть кнопка, которая при нажатии изменяет что-то в представлении, например цвет фона, это означает, что при повторном использовании представленияцвет будет другим для других элементов, для которых пользователь никогда не нажимал кнопку.
Как это можно исправить, поскольку это не будет связано с каким-либо состоянием данных, которые представление должно отображать с адаптера?