Я хочу, чтобы кнопка переключала list_item_layout для recyclerView.
Я просмотрел различные образцы на так и на этом https://github.com/gjiazhe/LayoutSwitch ( но дело в gridlayoutmanager) Мне нужен менеджер компоновки списка, но разные файлы компоновки.
Но в моем случае я onScroll загружаю больше элементов, и когда я меняю только переменную параметра адаптера изменения и уведомляю об изменении, как в этом коде, у меня есть смесь. Некоторые элементы по-прежнему используют старую раскладку.
Поэтому я воссоздал адаптер, но я думаю, что это не лучший способ решить эту проблему.
Вот мой последний фрагмент кода
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_no_image_view) {
int lastFirstVisiblePosition = ((LinearLayoutManager)mRecyclerView.getLayoutManager()).findFirstCompletelyVisibleItemPosition();
mAdapter = new ItemsAdapter(getContext(), mPostsList, this);
mAdapter.setLayoutType(ItemsAdapter.TYPE_LIST);
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.getLayoutManager().scrollToPosition(lastFirstVisiblePosition);
return true;
}
return super.onOptionsItemSelected(item);
}
Есть ли лучший способ сделать это?
ОБНОВЛЕНИЕ: Обнаружена ошибка, просто необходимо переопределить @Override public int getItemViewType (int position) и вернуть необходимый тип просмотра
И это сделает
mAdapter.setLayoutType(newType);
mAdapter.notifyDataSetChanged();
работай как шарм