Ответ 1
Мне нужно было иметь два типа на View
на моем RecyclerView
Adapter
, а для режима "обычный" и один для режима с несколькими выборами.
Итак, вы можете переопределить getItemViewType
, чтобы заставить Adapter вызвать ваш onCreateViewHolder
для всех представлений.
Добавьте это в код Adapter
:
public void setActionMode(ActionMode actionMode) {
this.actionMode = actionMode;
notifyDataSetChanged();
}
@Override
public int getItemViewType(int position) {
return (actionMode == null ? 0 : 1);
}
Добавьте это в ViewHolder
:
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view;
if (viewType == 0) {
view = inflater.inflate(R.layout.layout_1, parent, false);
} else {
view = inflater.inflate(R.layout.layout_2, parent, false);
}
...
}
Поскольку вы возвращаете другой ViewType
, когда в ActionMode
, Адаптер вынужден отбросить все созданные просмотры и снова воссоздать все.