2012-07-09 83 views
1

我基本上試圖禁用滾動列表視圖時,用戶觸摸列表標題和執行MotionEvent.ACTION_MOVE監聽onTouch事件並禁用滾動ListView

如果你想知道爲什麼這個瘋狂的實施? - 我基本上在我的listView標題上構建了一個自定義搜索欄,它在MotionEvent.ACTION_MOVE上工作,並且由於視圖是列表視圖的標題,它不應該滾動,直到用戶從此自定義標題視圖中脫離觸摸爲止。

所以我的問題是/。

現在我有2個java類。活動(具有此列表視圖)和自定義標題(這是View實施OnTouchListener)。

  1. 我如何通過價值時,我的頭視圖觸摸到這個列表視圖(活動)來禁用滾動?
  2. 似乎可以通過重寫dispatchTouchEvent來禁用列表視圖滾動,如here。由於我不是一個自定義listView有可能在活動類本身中禁用?

對不起,我只是在學習,所以請不要介意我的新手。

回答

1

好吧,我問了一個問題,所以我回答了我的問題的前半部分。

如何在我的標題視圖被觸摸時將值傳遞給此列表視圖(活動)以禁用滾動?

我在創建interface時得到了我的解決方案。所以我創建了一個public static interface,它有一個public void headerTouched(Boolean touchEvent);方法。我的代碼爲listView的類是implementer,因此它會自動覆蓋接口類中的此方法。我在這個類中創建了一個私有變量(在我的情況下:boolean),它監聽從驅動程序類返回的布爾值。我的驅動程序類是具有此接口對象的HeaderView,並通過它來設置值。爲了幫助界面上的新手,我在下面發佈了我的代碼。

接口類

public static interface HeaderTouchListener{ 
    public void headerTouched(Boolean touchEvent); 
} 

實施者類

private boolean headerTouched = false; 
public void headerTouched(Boolean touchEvent) { 
    headerTouched = touchEvent; 
} 

驅動程序類

HeaderTouchListener touchListner = new ImplementerClassName(); 
touchListner.headerTouched(true); 

我仍然無法弄清楚如何在列表視圖中禁用滾動。更多關於它的信息,請按照這個問題Set dispatchTouchEvent for List View without creating custom List View class. (for disabling scroll)