我有一个与父母RecyclerView和他的孩子在一起的片段(孩子是内部Recyclerview)。当我滚动到底部(最后一个数据),然后再次滚动到顶部时,我发现了问题。数据之一丢失。当我尝试再次滚动到底部并滚动到顶部时,数据是随机的。有人可以帮助我吗?
HomeFragment
GridLayoutManager gl = new GridLayoutManager(getContext(), 1,
GridLayoutManager.VERTICAL, false);
ParentAdapter adapter = new ParentAdapter(getContext(), parentList);
rcvParent.setAdapter(adapter);
OnBindViewHolder
holder.title.setText(parentList.get(position).getTitle());
if (parentList.get(position).getProducts() != null) {
for (ProductModel pm : parentList.get(position).getProducts()) {
productList.add(pm);
}
GridLayoutManager childLayout = new GridLayoutManager(mContext, 1, GridLayoutManager.HORIZONTAL, false);
holder.childRecyclerView.setLayoutManager(childLayout);
ChildAdapter ca = new ChildAdapter(mContext, productList);
holder.childRecyclerView.setAdapter(ca);
} else {
holder.childRecyclerView.setVisibility(View.GONE);
}
屏幕截图
答案 0 :(得分:0)
当您滚动到底部并再次滚动到顶部时。 OnBindViewHolder
方法调用,
因此内部的Recyclerview会再次设置适配器。
最好将NestedScrollView
用作fragment
的父级,而不要使用RecyclerView
您可能会遇到滚动时recyclerview速度慢的问题。使用此代码来解决它并提高性能。
recycleview.setNestedScrollingEnabled(false);
ViewCompat.setNestedScrollingEnabled(recycleview, false);
recycleview.setHasFixedSize(true);
recycleview.setItemViewCacheSize(20);
recycleview.setDrawingCacheEnabled(true);
recycleview.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
现在,您应该使用片段OnBindViewHolder
中onCreateView
方法中的代码来设置内部recyclerView的适配器
告诉我您是否有问题