最后一个设置子视图可见性的位置

时间:2011-08-04 06:54:55

标签: java android view visibility viewgroup

我正在使用Android APi 3。 我构建了一个包含两个控件的容器控件:另一个容器(布局)和一个ListView。

在主容器控件中,我重写onLayout函数,根据列表控件(第二个子视图)中的项目将子视图的可见性更改为GONE / VISIBLE。

问题是,当我使用GONE然后触发一个事件并将其设置为VISIBLE时,第一个子控件显示但是ListView没有显示该项 - ListView显然有一个项目。

也许onLayout可能不是最后一个调用子控件的setVisibility的地方。如果没有,最好的地方是什么?

对于我的问题,使用INVISIBLE修复问题而不是GONE。

下面是代码:     @覆盖     protected void onLayout(boolean changed,int l,int t,int r,int b){

    /* if there's no data to display, hide headerView */
    if (listView.getAdapter() == null || listView.getAdapter().getCount() == 0)
        headerView.setVisibility(INVISIBLE); // if set to GONE, it won't display the listView when there's only one item or unless it's refreshed 2nd time.
    else
        headerView.setVisibility(VISIBLE);

    super.onLayout(changed, l, t, r, b);
}

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

可能你需要使用yourAdapter.notifyDataSetChanged();刷新整个listView 你做到了吗??