
我在RecyclerView里面有一些物品也是RecyclerViews.难以想象?假设我想要复制Play商店的布局:一个具有垂直线性布局的大型RecyclerView,并由许多元素填充:单个应用程序和应用程序轮播.
如果要添加的项目是单个应用程序的布局,则将使用ID 1,我将添加单个项目的布局.
另外,如果我需要添加一个Carousel,那么我将在主RecyclerView中添加一个元素:另一个带有自己的适配器的RecyclerView.
这非常有效.滚动主RecyclerView时除外.为什么?因为某些视图在不再可见时被销毁,然后在onBindViewHolder()方法中重新创建.为什么在这?因为主要RecyclerView的适配器正在传递位置X,然后调用OnBindViewHolder().然后,后者使用自己的适配器创建一个新的RecyclerView并将其分配给它.我想保留这些观点只是因为它们每次重新充气都很重要.
这可能吗?如果是的话,你能告诉我怎么样吗?
recyclerView.getRecycledViewPool().setMaxRecycledViews(TYPE_CAROUSEL, 0);
这不会回收viewType TYPE_CAROUSEL的任何视图,但如果此类型的项目数非常高,那么它将显着降低您的性能,甚至可能导致OOME
编辑
在阅读MML13的答案后,我认为它可能适合您.当您在外部RecyclerView中重新绑定该视图时,您担心旋转木马的项目会被重新充气.如果所有这些轮播都是相同的类型,即它们都使用相同的适配器,您可以将适配器保持在RecyclerView的ViewHolder外部,只需交换数据并在重新绑定时调用此适配器上的notifyDataSetChanged()或notifyItemRangeChanged(…) .这将回收所有轮播视图和这些轮播内的所有视图.
转载注明原文:android – 我希望我的RecyclerView不回收一些物品 - 乐贴网