2015年7月2日木曜日

リストにヘッダーをセットした場合の注意点

リスト表示のヘッダー、フッターに何かを挿入したい場合。

TextView textView = new TextView(getActivity());
textView.setText("This is Header");
getListView().addHeaderView(textView, null, false);

アダプターの追加
setListAdapter(adapter);

みたいに、
setListAdapter() する前に addHeaderView() してあげる必要がある。

しかし、ここで注意点。

このままだと、他画面に移って、また上記の画面に戻った場合、エラーで落ちる。
理由は、既にsetListAdapter() されてるから addHeaderView() できません。

つまり、アダプターが破棄されずに残っている。

これを回避するには、
@Override
public void onDestroyView() {
    super.onDestroyView();
    setListAdapter(null);
}

このように、onDestroyView() にて、アダプターをnull してやる。

なお、アウトオブメモリー対策にもなる模様。

0 件のコメント: