如何在嵌套的RecycleView中正确初始化RecycleView中的数据集?

问题描述 投票:0回答:1

我有一个嵌套的RecycleView:

BodyRecycleView的每一项都是一个DetailRecycleView DetailRecycleView的每个项目都是一个元素 DetailRecycleView 中的元素仅在触摸时显示

我考虑节省 BodyRecycleView 创建步骤的时间,因此我跳过在 DetailRecycleView 中创建元素数据集。

onBindViewHolder() 

BodyRecycleView 仅使用空数据集创建 DetailRecycleView。 DetailRecycleView 中的元素数据集是在

中创建的
getItemCount() 

DetailRecycleView。显示没有问题,但是当触摸要交互的元素时,有时会显示错误的元素。

我尝试调试,发现当问题发生时,它不会调用

onCreateViewHolder() 

元素有问题。正常情况下,应该这样调用:

onCreateViewHolder()
ViewHolder constructor
onBindViewHolder()
ViewHolder constructor

onBindViewHolder() 

尚未被调用,因此它显示其他 DetailRecycleView 中的元素; 也许将数据集的初始化放入

getItemCount() 

造成这个问题。有什么办法可以让我继续靠近并度过这种情况吗?

java android
1个回答
0
投票

进一步调试后,错误的元素是未回收的 ViewHolder,因此我认为先前嵌套的 recycleView 的清除 recycleView 有问题。尝试在我的 DetailRecycle 视图中重写这样的预定义函数看起来可以解决这个问题。

    @Override
public void onDetachedFromRecyclerView(@NonNull RecyclerView recyclerView) {
    super.onDetachedFromRecyclerView(recyclerView);
    Log.d(TAG, "Forcing to clear ViewPool of DetailAdapter " + stock.getName());
    recyclerView.getRecycledViewPool().clear();
}
© www.soinside.com 2019 - 2024. All rights reserved.