gpt4 book ai didi

android - RecyclerView 更改所有项目的项目布局的最佳方式?

转载 作者:行者123 更新时间:2023-11-30 00:16:48 28 4
gpt4 key购买 nike

我想要一个按钮来切换 recyclerView 的 list_item_layout。

我查看了关于 so 和 this 的各种样本 https://github.com/gjiazhe/LayoutSwitch (但它正在处理 gridlayoutmanager)我需要列表布局管理器,但需要不同的布局文件。

但在我的例子中,我 onScroll 加载了更多项目,当我只更改更改适配器参数变量和 notifychange 时,就像在该代码中一样,我混合了。有些项目仍然使用旧布局。

所以我重新创建了适配器,但我认为这不是解决这个问题的最佳方法。

这是我的最终代码 fragment

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) 并返回所需的 View 类型

这将使

mAdapter.setLayoutType(newType);
mAdapter.notifyDataSetChanged();

像魅力一样工作

最佳答案

做类似的事情:

mAdapter.setLayoutType(ItemsAdapter.TYPE_LIST);
mAdapter.notifyDataSetChanged();

应该是你所需要的。如果那是您正在做的事情并且它不起作用,请使用一个适配器发布您的原始代码。

关于android - RecyclerView 更改所有项目的项目布局的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47114439/

28 4 0
文章推荐: java - 将变量从 MainActivity 传递到另一个 Activity 到选项卡 Fragment
文章推荐: android - 在水平 ScrollView 中的 ImageView 列表之间添加边框/分隔符
文章推荐: android - cordova 启动我的应用程序时出错
文章推荐: java - ArrayList inside ArrayList inside a class