您的位置:首页 > 移动开发 > Android开发

Android 开发笔记 两个ListView之间联动

2013-05-02 15:58 162 查看
说明:

1.页面中的两个ListView需要进行联动,其中一个(L1)不能通过手动进行上下滚动,需要另一个(L2)的滚动来进行带动,

2.但是由于两个ListView显示的行数不同,如一个(L1)固定为一行,另一个(L2)根据不同屏幕大小行数是变化的,例如:3行,

3.而且两个ListView中的数据是对应的,L1显示的记录对应L2可见列表中的第一行记录,

4.这样L2在滚动列表时,其第一行记录变化情况要和L1一样,在手指按下拖动时,L2中第一行移动的位置(如1/2),L1也要移动(1/2),在L2快速滚动时,L1也要对应。

原理:

1.要监听list的onTouch事件,由于ListView的滚动过程分为手指触摸时的移动与手指推动后的快速滚动,需要分别对MOVE与UP进行处理。

由于无法修改MoveEvent事件对象,即时重新obtain也无法修改事件的速度值(在android 2.1时),所以只能通过计算每个移动事件之间产生的距离与时间,执行soomscrollby函数来实现滚动。

在MOVE事件时,在两个事件间隔的时间内执行soomscrollby,实现两个list的触摸滑动。

当在UP事件时,可以计算滑动的速度,并在自定义的时间内移动距离(距离=速度x时间),同样执行soomscrollby方法。

2.两个list的联动,对其中一个主动的listview监听onTouch事件,另一个屏蔽onTouch事件,

然后就是对两个list对象同时执行soomscrollby方法,方法执行的时间长度一样,移动相同行数的距离。

在UP事件后的快速滑动,同样也是相同的时间内执行相同行数的距离。两个list的移动行数一定要相同。

3.如果先要指定的行在第一行显示,可以执行list对象的selectitem方法。或者执行soomscrolltoitem。

实现:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: