私は 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);
}
何かご意見は?