2014-01-19 55 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>