0

私は ViewPager を持っています。これは、内部にリストビューを持つフラグメントを取り込んでいます。ポイントは、非常に大量のデータを表示する必要があり、ページを作成する必要があるため、少量のデータのみを要求することです。

私の問題は、ページが変更されたときに asynctask を呼び出してデータを取得し、このページのリストビューを埋める必要があることです。これを行うにはどうすればよいですか? タスクの onPostExecute でそのリストビューを変更するにはどうすればよいですか?

PS: タブ + スワイプ アクティビティに Eclipse テンプレートを使用したため、コードを投稿していません。

4

1 に答える 1

1

あなたの問題が正しいかどうかはわかりませんが、最初に頭に浮かぶのは、単純な AsyncTask の代わりに AsyncTaskLoader を使用することです。私の(限られた)経験から、フラグメント/アクティビティのライフサイクル/構成の変更に関しては、ローダーは多くの問題を解決します。

ローダー ガイド (Android デベロッパー)

データを取得するためにどのような方法を使用していても、ページ A にデータをロードした後にページ B のリスト ビューの内容を変更することは、それほど問題ではありません。アクティビティのページ B (次に、setCurrentItemでページを変更し、 setOnPageChangeListenerでページ変更イベントをインターセプト) から、SQLite データベースを使用するより洗練されたアプローチに移行します (可能であれば、結果のキャッシュを実行できます)。

ああ、忘れないでください。抽象クラスFragmentPagerAdapterの実装を使用している場合は、この PagerAdapter 実装のように、あるページから別のページにデータを直接渡すことができる可能性があります。

ユーザーがページに戻ることができる限り、フラグメントマネージャに永続的に保持されるフラグメントとして各ページを表します。

( getItem(int)を使用して、必要なページへの参照を取得します。ただし、これを自分で試したことはありません)。

お役に立てれば

編集FragmentPagerAdapter を使用していない場合、ViewPager に表示されている現在の Fragment への参照を取得するのは難しいことがわかりました。これが問題の原因である場合は、その方法に関する情報がここにあります。

ViewPager の一部として ListFragment のデータを更新する

ViewPager から Fragment を取得する

ViewPager と現在の Fragment の間の通信

于 2013-05-27T20:41:52.080 に答える