2014-01-19 86 views
0

我有一個ListView的兒童切換可見性點擊。每個項目有兩個孩子,一次只能看到一個孩子,另一個是gone,如果點擊該項目,則其子項的可見性被切換。ListView不包裝內容後兒童變化的可見性

很不幸的是,一個孩子比另一個孩子高,所以在每次切換時需要改變列表視圖的高度,但這不會發生。高度保持不變。

我曾嘗試玩LayoutParams但沒有得到它。

我該如何解決這個問題?

+0

你叫'notifyDataSetChanged()'你的適配器上您處理GONE /可見光事件之後? – nKn

+0

@NKN只是試了一下,沒有工作 – Olayinka

+0

有一件事我沒有得到:你可能定義了一個自定義的行佈局,當你在圖形預覽中查看它時,它應該是呈現的行?您應該添加您的自定義佈局代碼。 – nKn

回答

1

經過大量的試驗和錯誤之後,我設法通過在更改視圖的可見性後更改ListView的LayoutParams來簡化工作。

view.setVisibility(View.GONE); 
LinearLayout layout = (LinearLayout) view.getParent(); 
layout.getChildAt(0).setVisibility(View.VISIBLE); 
((ListView) layout.getParent()).getLayoutParams().height = 
       LinearLayout.LayoutParams.MATCH_PARENT; 

注意,在我的ListView項目看起來像這樣

<LineaLayout> 
    <LinearLayout 
    onclick="alterVisibility"> 
    </LinearLayout> 
    <LinearLayout 
    onclick="alterVisibility" 
    visibility="gone"> 
    </LinearLayout> 
</LinearLayout>