質問を明確に表現していることを願っています。
私はレガシー プロジェクトに取り組んでおり、次のような特定の画面があります。
大きな長方形は aFragment
で、複数の長方形はそれぞれ a のExpandableListFragment
中にあるViewPager
それぞれのコンテンツはExpandableListFragment
、サーバーから JSON 経由でロードされます。
- 関連するリストアダプターを作成して設定した後、それぞれ
ExpandableListFragment
にJSONデータのリクエストをサーバーに送信しました。onActivityCreated
- このリクエストは非同期で、取得したデータをロードするためのコールバックがあります。
- こうして表示されたデータは、インデックス (0) のグループが展開された ExpandableList として表示されます。
ViewPager
含まれているサイズに応じて、左または右にスクロールできますExpandableListFragment
ExpandableListFragment
私は、正確に1つずつリクエストを送信することを理解しました。- しかし、ここまで左 (または右) にあまりにも速く移動したとします。たとえば、私はインデックス番号 12 にいます。
- そして、インデックス番号 0 のリクエストが終了し、コールバックが呼び出されました。
- コンテンツ ビューが
IllegalStateException
まだ作成されていません。 例外の原因となる行は、メソッドがコールバック メソッドであるということです。
public void processResult(ScheduleListJSON response) { setListData(response); adapter.notifyDataSetChanged(); // The problem line is here. getExpandableListView().setOnChildClickListener(ProgramScheduleExpandableList.this); if (getExpandableListAdapter().getGroupCount() > 0) { getExpandableListView().expandGroup(0); }
}
このメソッドのコールバック (インデックス 0) によってアドレス指定されたリストビューが既になくなっているのは、右に行きすぎたためだと思います。
質問: 私の意図を達成する方法について何か提案はありますか? ユーザーがメインのアクティビティを離れていなくても、フラグメントが画面から離れているため、すでに終了している可能性があるため、非常に遅れて到着する可能性のある応答のグループ ビューを展開します。
事前にどうもありがとうございました。
UPDATE
ああ待っmPager.setOffscreenPageLimit(int)
て、ページャー内で利用できることが保証されているリストビューの数と関係がありますか?