Androidは2つのlistviewの同期スクロールを実現

7529 ワード

开発の过程でプロジェクトが2つのlistviewを同时にスクロールする効果があることを见て、だからみんなと分かち合いたいです!!
言うまでもなくlistviewのonScrolListenerでいくつかの操作をしたいと思っているかもしれませんが、
  
詳細は次のとおりです.
view source
print ? 01 public void setListViewOnTouchAndScrollListener( final ListView listView1, final ListView listView2){ 02           03             04          // listview2 scroll , 05          listView2.setOnScrollListener( new OnScrollListener() { 06      07     @Override 08     public void onScrollStateChanged(AbsListView view, int scrollState) { 09      // 10      if (scrollState == 0 || scrollState == 1 ){ 11       // view 12       View subView = view.getChildAt( 0 ); 13        14       if (subView != null ){ 15        final int top = subView.getTop(); 16        final int top1 = listView1.getChildAt( 0 ).getTop(); 17        final int position = view.getFirstVisiblePosition(); 18         19        // view 20        if (top != top1){ 21         listView1.setSelectionFromTop(position, top); 22        } 23       } 24      } 25       26     } 27      28     public void onScroll(AbsListView view, final int firstVisibleItem, 29       int visibleItemCount, int totalItemCount) { 30      View subView = view.getChildAt( 0 ); 31      if (subView != null ){ 32       final int top = subView.getTop(); 33   34 //      // view 35       int top1 = listView1.getChildAt( 0 ).getTop(); 36       if (!(top1 - 7 < top &&top < top1 + 7 )){ 37        listView1.setSelectionFromTop(firstVisibleItem, top); 38        listView2.setSelectionFromTop(firstVisibleItem, top); 39       } 40       41      } 42     } 43    }); 44          45        // listview1 scroll , 46          listView1.setOnScrollListener( new OnScrollListener() { 47      48     @Override 49     public void onScrollStateChanged(AbsListView view, int scrollState) { 50     if (scrollState == 0 || scrollState == 1 ){ 51       // view 52       View subView = view.getChildAt( 0 ); 53        54       if (subView != null ){ 55        final int top = subView.getTop(); 56        final int top1 = listView2.getChildAt( 0 ).getTop(); 57        final int position = view.getFirstVisiblePosition(); 58         59        // view 60        if (top != top1){ 61         listView1.setSelectionFromTop(position, top); 62         listView2.setSelectionFromTop(position, top); 63        } 64       } 65      } 66     } 67      68     @Override 69     public void onScroll(AbsListView view, final int firstVisibleItem, 70       int visibleItemCount, int totalItemCount) { 71      View subView = view.getChildAt( 0 ); 72      if (subView != null ){ 73       final int top = subView.getTop(); 74       listView1.setSelectionFromTop(firstVisibleItem, top); 75      listView2.setSelectionFromTop(firstVisibleItem, top); 76       77      } 78     } 79    }); 80 }