在开发的过程当中看到项目有实现两个listview同步滚动的效果,因此就但愿跟你们分享一下!! java
不用说你们可能也想到在listview的onScrollListener中作一些操做, ide
如今具体的细节以下: code
public void setListViewOnTouchAndScrollListener(final ListView listView1,final ListView listView2){ //设置listview2列表的scroll监听,用于滑动过程当中左右不一样步时校订 listView2.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { //若是中止滑动 if(scrollState == 0 || scrollState == 1){ //得到第一个子view View subView = view.getChildAt(0); if(subView !=null){ final int top = subView.getTop(); final int top1 = listView1.getChildAt(0).getTop(); final int position = view.getFirstVisiblePosition(); //若是两个首个显示的子view高度不等 if(top != top1){ listView1.setSelectionFromTop(position, top); } } } } public void onScroll(AbsListView view, final int firstVisibleItem, int visibleItemCount, int totalItemCount) { View subView = view.getChildAt(0); if(subView != null){ final int top = subView.getTop(); // //若是两个首个显示的子view高度不等 int top1 = listView1.getChildAt(0).getTop(); if(!(top1 - 7 < top &&top < top1 + 7)){ listView1.setSelectionFromTop(firstVisibleItem, top); listView2.setSelectionFromTop(firstVisibleItem, top); } } } }); //设置listview1列表的scroll监听,用于滑动过程当中左右不一样步时校订 listView1.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if(scrollState == 0 || scrollState == 1){ //得到第一个子view View subView = view.getChildAt(0); if(subView !=null){ final int top = subView.getTop(); final int top1 = listView2.getChildAt(0).getTop(); final int position = view.getFirstVisiblePosition(); //若是两个首个显示的子view高度不等 if(top != top1){ listView1.setSelectionFromTop(position, top); listView2.setSelectionFromTop(position, top); } } } } @Override public void onScroll(AbsListView view, final int firstVisibleItem, int visibleItemCount, int totalItemCount) { View subView = view.getChildAt(0); if(subView != null){ final int top = subView.getTop(); listView1.setSelectionFromTop(firstVisibleItem, top); listView2.setSelectionFromTop(firstVisibleItem, top); } } }); }