我有一个包含水平回收视图的具有底部表行为的碎片。回收视图由SnapHelper调整以实现页面效果。它看起来像这样:
在片段中的onCreateView事件中,我设置了Adapter和LayoutManager:
recycler_view.setAdapter(new MyRecyclerAdapter(getContext(), dataList));
recycler_view.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false));
在我设置适配器之后,在MyRecycorAdapter类对象中触发onCreateViewHolder事件,然后是onBindViewHolder:
@Override
public MyRecyclerAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.fragment_recycler_item, parent, false);
return new MyViewHolder(view, parent);
}
@Override
public void onBindViewHolder(MyRecyclerAdapter.MyViewHolder viewHolder, int position) {
/**I do something using position**/
}
当我第一次创建这个片段并配置RecyclerView时,一切正常,onBindViewHolder返回正确的位置。但当我切换到第1、第2等元素RecyclerView,然后重新创建片段时,出于未知原因,onBindViewHolder返回旧(最后)位置,尽管创建了新的适配器和LineralLayoutManager。
为了明确起见,我将把它分解为以下几个步骤:
问题:为什么我会得到旧的位置,最重要的是我如何修复它?
我读到Android专门保存了旧的ViewHolder,以便更有效地使用内存,但我不需要它。
UPD(解决方案):在我看来,这是一个临时的解决方案(不理想),但它是有效的。您需要在安装了Adapter和LayoutManager之后运行SmasthScrollToPoplace(0)。使用SmasthScrollToPoplace(0),而不是scrollToPoplace(0)非常重要:
recycler_view.setAdapter(new MyRecyclerAdapter(getContext(), dataList));
recycler_view.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false));
recycler_view.smoothScrollToPosition(0);
UPD.1(最佳解决方案):只需使用这个:
recyclerView.setSaveEnabled(false);
如果分离并重新附着片段,则只会销毁并重新创建其视图层次。恢复滚动位置是回收视图状态恢复行为的一部分。
如果您希望您的RecycorView
总是从滚动0开始,您可以首先通过禁用该行为来阻止它保存滚动状态:
recyclerView.setSaveEnabled(false);
我有一个关于Android的RecyclerView的问题。状态 我正在使用RecyclerView,如何使用它并将其与RecyclerView绑定。状态 我的目的是保存RecyclerView的滚动位置。
我使用了以下代码。我试图在回收器视图中膨胀多个布局。用这个我得到了铸造错误。无法将ViewWholder1转换为OnBindViewWholder中的ViewWholder(第二个ViewWholder)。通过一些调试,我发现OnCreateViewWholder中的int viewtype调用的位置不同于OnBindViewWholder中的int位置。你能解释一下两者的区别吗?我能做些什么来纠
在其他回收器视图中有一个回收器视图。两者都需要垂直滚动。外部回收器视图滚动正常,但内部回收器视图滚动不正常。 这是代码: ViewAdapter如下: 我尝试了以下两种回收商观点,但都无法解决问题 也尝试了这个:
为主机、硬盘、镜像资源提供回收站功能。避免资源误删除导致数据丢失。 为了避免因为删除误操作而导致的数据丢失风险,云管平台提供了回收站功能。回收站用于临时存放用户删除的主机(包括虚拟机和裸金属)、硬盘、镜像文件。回收站功能仅支持管理员用户使用,普通用户不可见。 虚拟机 主机回收站用于存放用户删除的虚拟机和裸金属文件。 硬盘 硬盘回收站用于存放用户删除的硬盘文件。 镜像 镜像回收站用于存放用户删除的镜
已删除的文件/文件夹/团队空间将统一进入到回收站,可以从回收站对文件进行恢复或者彻底删除。