Добрый день, такая проблема:
Есть заполненный RecyclerView
В адаптере для этого RecyclerView я сделал два типа ViewHolder'ов: VHItem_1 и VHItem_2
По умолчанию показывается VHItem_1
Я хочу чтобы при нажатии на кнопку в приложении все VHItem_1 поменялись на VHItem_2
Как это можно сделать?
private static class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
...
public RecyclerViewAdapter(Context context, ArrayList<MyObject> dataset) {
mDataset= dataset;
mCondition = true;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v;
if(mCondition) {
v = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_1, parent, false);
return new VHItem_1(v);
} else {
v = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_2, parent, false);
return new VHItem_2(v);
}
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
if(mCondition) {
VHItem_1 itemHolder = (VHItem_1) holder;
itemHolder.setItem(position);
} else {
VHItem_2 itemHolder = (VHItem_2) holder;
itemHolder.setItem(position);
}
}
@Override
public int getItemCount() {
return mDataSet.size();
}
@Override
public int getItemViewType(int position) {
if(mCondition)
return 0;
else
return 1;
}
public void changeCondition(boolean value) {
mCondition = value;
notifyDataSetChanged();
}
class VHItem_1 extends RecyclerView.ViewHolder {
...
}
class VHItem_2 extends RecyclerView.ViewHolder {
...
}
}
Получается после нажатия на кнопку я вызываю метод changeCondition() и получаю ошибку о невозможности преобразования VHItem_1 в VHItem_2. Как быть?