双列表联动效果如下:
以上,是博主根据鸿洋大神的玩Android开放的API做的一个客户端,其中导航界面使用了双列表联动来展示数据。
一、前期基础知识储备
1.使用强大的开源项目BRVAH装载两个列表的数据,简单易用,强烈推荐使用;
2.RecyclerView的滚动事件OnScrollListener研究 - 监听列表滚动状态的接口为 RecyclerView.OnScrollListener
注册接口的方法有两个:
1).setOnScrollListener(OnScrollListener listener) ,可能会有空指针问题,已经被废弃。
2).addOnScrollListener(OnScrollListener listener)
3.OnScrollListener类是个抽象类,有两个方法:
void onScrollStateChanged(RecyclerView recyclerView, int newState): 滚动状态变化时回调
recyclerView: 当前在滚动的RecyclerView
newState: 当前滚动状态 void onScrolled(RecyclerView recyclerView, int dx, int dy): 滚动时回调
recyclerView : 当前滚动的view
dx : 水平滚动距离
dy : 垂直滚动距离
dx > 0 时为手指向左滚动,列表滚动显示右面的内容
dx < 0 时为手指向右滚动,列表滚动显示左面的内容
dy > 0 时为手指向上滚动,列表滚动显示下面的内容
dy < 0 时为手指向下滚动,列表滚动显示上面的内容
1)recyclerView.scrollBy(x, y),这个方法是自己去控制移动的距离,单位是像素;
2)recyclerView.scrollToPosition(position),这个方法的作用是定位到指定项,就是把你想显示的项显示出来,但是在屏幕的什么位置是不管的,只要那一项现在看得到了,那它就罢工了;
3)recyclerView.smoothScrollToPosition(position),smoothScrollToPosition(position)
和scrollToPosition(position)
效果基本相似,也是把你想显示的项显示出来,只要那一项现在看得到了,那它就罢工了,不同的是smoothScrollToPosition是平滑到你想显示的项,而scrollToPosition是直接定位显示;
4)((LinearLayoutManager)recyclerView.getLayoutManager()).scrollToPositionWithOffset(position,0);主角总是最后才登场,这种方式是定位到指定项如果该项可以置顶就将其置顶显示。比如:微信联系人的字母索引定位就是采用这种方式实现。
二、上代码,具体实现
1.在布局中放入两个RecyclerVi