recyclerView 的坑

来源:互联网 发布:淘宝网购物情侣装 编辑:程序博客网 时间:2024/06/05 13:32

一 recyclerView 的bug 1.

https://code.google.com/p/android/issues/detail?id=77846

该问题现在还没有解决。本人是在recyclerView 从内存中重启的时候 ,想保存一个排序和原始数据恢复位置时遇到。

这里特别指出fragment的生命周期:onCreateView -> onViewCreated -> onActivityCreated -> onViewStateRestored-> onStart -> onResume

我在这里调了整整一天,都出现google的issue。原来初始化的基类初始化,在onViewCreated中调用,让我造成了这个isssue,重新异步请求刷新了一遍数据。
基本上看stackoverflow和issue下面的回答,有帮助的大意是:recyclerView 的数据刷新不同步(导致滚动位置无法定位或调用scrollToPosition时不同步)。解决方法是检查下有木有重复的比较连续刷新数据,刷新数据和定位几乎同时调用。

二 bug 2 滑动问题,见第一篇文章。

http://www.jianshu.com/p/4535442d568f
该文中已提出一个workaround

三 这个坑,是我自己挖的。

这里由于产品需要,recyclerView的item的高度为动态的wrap_content(建议不要使用,recyclerView由于得不到具体宽高,会多次调用getView方法),又要求recyclerView的item进行折叠。当recyclerView的数据项不满一屏时,且此时recyclerView的item由展开到折叠,此时存在视觉上的ui缓存。即该折叠项依然占据展开式的位置。此时,进行点击事件或滑动事件时,缓存的数据消失。 而采用stackoverflow上消去drawingcache 的方法没有作用:
https://www.google.com.sg/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0ahUKEwjo_ue06vnLAhVBYqYKHQESCVkQFggmMAE&url=%68%74%74%70%3a%2f%2f%73%74%61%63%6b%6f%76%65%72%66%6c%6f%77%2e%63%6f%6d%2f%71%75%65%73%74%69%6f%6e%73%2f%31%34%34%31%39%35%39%37%2f%68%6f%77%2d%74%6f%2d%64%69%73%61%62%6c%65%2d%74%68%65%2d%64%72%61%77%69%6e%67%2d%63%61%63%68%65&usg=AFQjCNHua37wKKbmd3802rrE0wWXaTcvcw
在listView或此处,我使用的workaround均为Handler post方法解决。

0 0