2011-10-14 36 views
0

在我目前正在構建的應用程序中,我一直在通過BaseAdapter與未綁定的數據列表同步ListViews。這一直工作到目前爲止,但現在我需要在ScrollView中有一個數據列表。將ListView放在ScrollView中的問題是兩個視圖都會滾動,導致難以瀏覽。從我在線閱讀的內容來看,共識似乎是因爲這個原因,ListViews不應該放在滾動視圖中,而應該使用LinearLayout或TableLayout。適用於在滾動視圖內顯示的列表,非滾動列表視圖?

我的問題是這樣的:任何人都可以告訴我如何擺脫ListView的滾動功能或如何通過適配器同步LinearLayout或TableLayout的數據列表?

回答

0

你可以讓自己的自定義的ListView組件,然後重寫dispatchTouchEvent()方法:

@Override 
public boolean dispatchTouchEvent(MotionEvent event) 
{ 
    int action = event.getAction(); 
    if (!scrollEnabled) { 
     event.setAction(MotionEvent.ACTION_CANCEL); 
     super.dispatchTouchEvent(event); 
     return true; 
    } 

    return super.dispatchTouchEvent(event); 
} 

在這類情況雖然,我已經在過去做的是有一個單獨的垂直的LinearLayout我的列表並通過代碼手動添加TextViews,使其看起來類似於一個列表視圖。

+0

John非常感謝您的回覆。你的代碼確實停止了滾動的ListView,但是現在我的問題是,當它的高度設置爲包裝內容時,我的父級佈局不「測量」我的ListView。我相信這是因爲ListViews被設計爲包含比它們被添加到的佈局更長的列表。有沒有解決這個問題的建議? –

+0

您有2個選項:1)手動設置ListView的高度(以代碼計算的高度或設置爲設置值,如200dp)。選項2)根本不要使用列表視圖,只需在LinearLayout容器內添加TextView。因爲listview在技術上具有無窮大的深度,所以它永遠無法使用wrap_content。 –

+0

@JohnLeehey我面臨同樣的問題,但如果我設置列表視圖高度取決於列表項高於它將工作,但在這種情況下,視圖的回收將不可能,因爲所有的列表項目將同時可見,做你有任何解決方案? –