ListFragment を継承した Fragment を作ったとき、 ListView に要素が無い場合の EmptyView を設定したかったのですが、素直に View を作って getListView().setEmptyView()
するだけではダメだったので備忘録として書きます。
ともあれ結論
ListFragment の onStart
または onActivityCreated
で、 EmptyView として表示したい View を ((ViewGroup) getListView().getParent()).addView()
で追加しておく。
@Override
public void onStart() {
super.onStart();
// View を作って
TextView textView = new TextView(mActivity);
textView.setText("empty");
// 子ビューとして追加しておいて
((ViewGroup) getListView().getParent()).addView(textView);
// EmptyView に登録する
getListView().setEmptyView(textView);
}
※ ListFragment は Support Library v4 のものです。また、この ListFragment は ActionBar.NAVIGATION_MODE_TABS
に設定した Activity で、 ViewPager の上で使っています。