ViewPagerを含むFragmentActivityがあります-このViewPagerには3つのListViewが含まれています-それぞれが独自のアダプター(および固有のデータセット)を持つように設定されています。
AsyncTaskLoaderを使用してこれらのアダプターにデータを入力したいのですが、ViewPagerで特定のビューが選択されている場合に限ります。
アクティビティのonCreateメソッドでローダーを初期化する必要がありますか?(以下のコード)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_foo);
getSupportLoaderManager().initLoader(0, null, this);
getSupportLoaderManager().initLoader(1, null, this);
getSupportLoaderManager().initLoader(2, null, this);
}
または、OnPageChangeListener.onPageSelectedのリスナーの結果など、呼び出しinitLoader(...)をインタラクティブに呼び出しても問題ありませんか?
mPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int newPage) {
getSupportLoaderManager().initLoader(newPage, null, this);
}
...
}
ユーザーがページャーの最初のビューしか見ることができない場合は、時間のかかる可能性のある3つのローダーを前もって実行する必要はありません。
編集: または、ViewPagerに各ビューにフラグメントを使用させ、各フラグメントが独自のローダーの管理を担当するようにする方が良い設計でしょうか?