美文网首页
Android中Holder复用问题

Android中Holder复用问题

作者: 每天坚持一点 | 来源:发表于2017-05-03 17:23 被阅读0次

    1:android中常见的RecyclerView控件中 position1位置的条目View进度正在更新,但是滑动到position2位置条目的时候,由于view复用的问题,导致在position2使用了position1位置的View对象,其中的进度控件被复用--就是hashcode的地址值是一样的! 如何解决问题呢?


    思路:

          第一步:Hashmap集合<position,holder>类型存储对应位置position的holder的引用值!用huadongPosition标记 当前滑动到什么位置,用currentDrawPosition标记当前正在绘制的位置!

          第二步:在进度的更新的回调函数中,必须判断出当前页是否与currentDrawPosition所属同一页:

                   false: 将其对应holder中的进度控件设置为原始状态!

                   true: 将其对应的Holder的进度控件设置为最新的状态!

     判断是否同一页的逻辑代码:

            holderMap.get(currentBofangPosition)==holder &&

                ((linearLayoutManager.findFirstVisibleItemPosition()>currentDrawPosition) ||

                       linearLayoutManager.findLastVisibleItemPosition()<currentDrawPosition

          第三步: 在滑动时候初始化view相关内容的函数中,加入当前绘制的currentDrawPosition!=position&& holderMap.get(currentDrawPosition)==holder 业务判断,true得出huadongPosition=position;当前position位置的holder复用了正在绘制进度控件所属的holder对象-------根据当前绘制的位置与poistion相等,同时当前的播放的状态为正在播放条件如下 currentDrawPosition==position && huifangState==2说明当前位置position就是正在绘制进度控件的位置!

        

    相关文章

      网友评论

          本文标题:Android中Holder复用问题

          本文链接:https://www.haomeiwen.com/subject/vsfltxtx.html