0

私は Android APi 3 を使用しています。別のコンテナー (レイアウト) と ListView の 2 つのコントロールを含むコンテナー コントロールを作成しました。

メイン コンテナー コントロールでは、onLayout 関数をオーバーライドして、リスト コントロール (2 番目の子ビュー) の項目に応じて子ビューの可視性を GONE / VISIBLE に変更しました。

問題は、GONE を使用してからイベントがトリガーされ、それを VISIBLE に設定すると、最初の子コントロールが表示されますが、ListView にはアイテムが表示されません - ListView には明らかに 1 つのアイテムがあります。

おそらく、onLayout は子コントロールの setVisibility を呼び出す最後の場所ではないかもしれません。そうでない場合、最適な場所はどこですか?

私の問題では、GONEの代わりにINVISIBLEを使用すると問題が修正されます。

以下はコードです: @Override 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);
}

何かご意見は?

4

1 に答える 1

0

おそらく、listView 全体を更新する必要がありyourAdapter.notifyDataSetChanged(); ますか?

于 2011-08-04T07:00:43.113 に答える