ListFragment で setEmptyView を使う

  • 11
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

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 の上で使っています。