1. 程式人生 > >android兩個ListView同步滾動

android兩個ListView同步滾動

我在網上看到大多數專家講解的都是設定setOnScrollListener滑動監聽,但是個人感覺設定滑動監聽比較麻煩,感覺使用事件分發來做比較簡單;

實現思路:首先來線下整體佈局,是使用一個橫向的線性佈局裡面放了兩個ListView,使用權重讓兩個ListView平分螢幕的寬。

如果想使用View的事件分發,必須自定義這個View,這裡面實現起來也非常簡單,只是自定義一個線性佈局繼承系統的線性佈局;

我這裡面使用的是線性佈局,實際專案中使用什麼佈局都可以,這裡面只是方便兩個ListView設定權重;

實現自定義佈局在這個類中重寫onInterceptTouchEvent();作用就是把事件中斷掉,不讓ListView得到事件;

    /**
     * 判斷是否需要中斷事件的傳遞
     * 預設返回false 意思是,不中斷
     * 返回true 意思是,中斷
     */
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        return true;
    }

如果只寫這個方法執行結果是兩個ListView跟進沒辦法滑動,下面還需要重寫onTouchEvent()方法,在這個方法中把事件同時交給兩個ListView,作用就是當你滑動的時候兩個ListView都能收到滑動事件;
 public boolean onTouchEvent(MotionEvent event) {

        //獲得listview的個數
        int count=getChildCount();

        for (int i = 0; i < count; i++) {
            View child = getChildAt(i);
            try {
                child.dispatchTouchEvent(event);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return true;
    }

好了,只需要兩個方法,十行程式碼搞定,所以感覺比設定滑動監聽要簡單;