有没有办法阻止RecyclerView脱离视图?

时间:2017-06-13 18:10:12

标签: android android-recyclerview

有没有办法阻止RecyclerView分离视图?我遇到了需要实时屏幕外视图的情况,当我在RecyclerView中滚出项目视图时,会调用onViewDetachedFromWindow。

用例是一个使用SDK的多流视频播放器,不幸的是它具有Thread.Sleeps并且需要使用主线程以便它不会崩溃。我无法访问此SDK的内部,因此我无法更改此行为。

SDK会创建从FrameLayout继承的每个小部件,如果我不关闭底层媒体源,我会得到一个JNI异常,抱怨表面消失了。所以,出于这个原因,我在onViewAttachedFromWindow和onViewAttachedToWindow中的SDK.open()中调用了SDK.close()。

这里的问题是,当我浏览Feed时,由于主线程在打开/关闭SDK流时起作用,因此存在非常不稳定的滚动行为。

以前,我有一个具有较大屏幕外限制的ViewPager,这在所有提要的初始加载(完美无缝滚动)后效果很好。但是,现在我必须提供不同的查看模式(一次一个屏幕,2x2网格等),这是LayoutManagers的一个很好的用例,并且很难创建为ViewPagers(我也有各种类型的触摸交互)我没有提到 - 很难在ViewPager中管理。

我也尝试过延迟SDK打开和关闭调用,直到滚动完成 - 但这会偶尔导致奇怪的行为。

在RecyclerView方面,setItemViewCacheSize和isRecycleable似乎对分离视图没有任何影响。我也尝试在LayoutManager中覆盖getExtraLayoutSpace,它似乎也没有解决不连贯的滚动。

最后,我目前的解决方法是使用PagerSnapHelper仅允许“逐个滚动”功能......

1 个答案:

答案 0 :(得分:0)

设置View Holder的isRecyclable property to false不起作用吗?

相关问题