一、需求描述
先上图
如图所示,这是一个横向滑动的recycleview,当我从标题栏向下移动到推荐列表的时候,记录上一个从推荐列表向上滑动的子item
二、问题描述
我首先想到的是在Adapter里面的onBindView给每一个view设置一个id,再通过recycleview.getChildAt(position).getID()方法拿到view的ID再通过setNextFocusDown()方法设置标题栏滑下来需要选中的view
这样首页如果只有一页其实也是没问题的, 但是当数据多了,往右滑动到下一页的时候,position大于当前屏幕展示view的个数时,通过getChildAt()方法获取view会报空指针异常,因为getChildAt(position)这个方法其实只能get到当前屏幕所展示的view
三、问题解决
那么问题如何解决:
很简单,不用getChildAt()方法去获取view,通过recycleview的LayoutManager去获取,recycleview.getLayoutManager().findViewByPosition(),这样就能拿到当前position位置下的view啦
四、题外介绍
LayoutManager作为一个布局管理器,很好的管理了recycleview的展示,在recycleview中,我们可以通过LayoutManager去实现横向、纵向的Listview,以及gridvew、瀑布流等效果。
包括一些recycleview的scroll也可以在自定义LayoutManager里面去控制,各位可以多去看看资料,了解一下LayoutManager的介绍以及自定义LayoutManager,方便更好控制recycleview,提升自我技术!