
我正在使用带有异构视图的RecyclerVIEw,as seen in this tutorial.
我在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不回收一些物品全部内容,希望文章能够帮你解决android – 我希望我的RecyclerView不回收一些物品所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)