2012-07-27 107 views
1

我有兩個列表視圖。當其他列表視圖滾動時,我需要自動滾動一個列表視圖 。這兩個列表視圖都應該有這個能力列表視圖不平滑滾動

我實現了onScrollListner兩個列表視圖

的列表視圖1

@Override 
public void onScroll(AbsListView view, int firstVisibleItem, 
       int visibleItemCount, int totalItemCount) { 
if (l1.getChildAt(0) != null) { 
    Rect r = new Rect(); 
    l1.getChildVisibleRect(l1.getChildAt(0), r, null); 
    l2.setSelectionFromTop(l1.getFirstVisiblePosition(), r.top); 
    } 

} 

的列表視圖2

@Override 
public void onScroll(AbsListView view, int firstVisibleItem, 
       int visibleItemCount, int totalItemCount) { 
if (l2.getChildAt(0) != null) { 
    Rect r = new Rect(); 
    l2.getChildVisibleRect(l2.getChildAt(0), r, null); 
    l1.setSelectionFromTop(l2.getFirstVisiblePosition(), r.top); 
    } 

} 

我有一個關於這個

2個問題

1 - 列表不滾動順暢。 (不喜歡normall列表視圖)

2 - 我只能滾動使用一個列表視圖兩個列表視圖(當我滾動使用L2 都得到滾動但是當我滾動使用L1它不工作都留固定。)

在此先感謝

回答

0

它發生becoz你把裏面的ListView列表視圖:)

您可以使用此實現你的問題。

假設L1是內部L2則

L1.setOnTouchListener(new OnTouchListener() { 

      @Override 
      public boolean onTouch(View arg0, MotionEvent arg1) { 

       if(arg1.getAction() == MotionEvent.ACTION_DOWN || arg1.getAction() == MotionEvent.ACTION_MOVE) 
       { 
       L2.requestDisallowInterceptTouchEvent(true); 

       } 
       return false; 
      } 
     }); 
0

這是你的應用程序,你可以做任何你想要的,但我很困惑與你想要達到的目標。擁有兩個列表視圖的唯一想法是對兩個不同類別的數據進行單獨表示,以便可以分別訪問(滾動或選擇)它們。
如果您有要求代表需要並排顯示爲列表的兩類數據,那麼您可以有一個包含兩列的列表行。
像這樣將工作:
enter image description here


可以填充這兩行與不同種類的數據,這可以滾動起來。

+0

你的回答讓我思考不一樣。我使用網格視圖修復了我的問題。謝謝 – 2012-07-27 08:43:15

+0

網格視圖是一個更好的選擇。使用網格視圖處理點擊不同的列項目會更容易。 :) – karn 2012-07-28 05:12:50

0

我發現了一種不同的方式來獲得相同的結果。我刪除了我的兩個列表視圖,並將其替換爲帶有兩列的網格視圖的 。這樣我可以滾動而不用實現onScrollListner,我甚至可以使用我用於兩個listviews的自定義適配器。