2

異なるデータを除いて、ViewPager基本的にカスタム ビューを表示する があります。ListFragmentしたがって、これを同じように使用できる方法が必要であると考えListFragmentていますが、表示されるページに基づいて異なるデータを入力します。

例としてGoogle Playストアのデータを使用すると、

  1. ページ 1 - 有料アプリを価格の昇順で並べ替える
  2. ページ 2 - 有料アプリを価格の降順で並べ替える
  3. ページ 3 - 評価の降順で無料アプリを並べ替える

上記を達成するにはどうすればよいですか?ページ 1 とページ 2 は同じデータを持っているので、並べ替えるだけで済みます (私は で行いましたCollections.sort) が、ページ 3 はListFragment同じカスタム ビューで を示していますが、代わりに無料アプリの情報をダウンロードするためにサーバーに要求を送信する必要があります。

ありがとう!:)

4

1 に答える 1

0

さて、これがあなたが持っていると私が仮定するセットアップです。

それぞれに、何らかの種類のListViewを介してデータが提供されます。ListAdapter

AViewPagerは a によって提供されますPagerAdapter

この場合、ListAdapter同じ正確な情報を任意の順序でソートする single を使用できます。

FragmentPagerAdapterデータを共有する各フラグメントに同じアダプターを提供できます。getView()各フラグメントは、必要な順序でデータを要求できます。フラグメントがビューを構築するときに、アダプターはデータをソートし、メソッドを介して値を送信します。

の場合、FragmentPagerAdapterフラグメントをスワップアウトしてメモリに保持するため、それらはすでに再利用されています。ただし、それらのビューは破棄して再構築することができます。ビューを再構築するたびに、提供されたアダプターのメソッドListFragmentが呼び出されます。getView()このgetView()メソッドは、要求された位置に基づいてリストの各行を返します。

すべて同じデータであるため、データを保持するアダプターは 1 つしか必要ありません。ただし、要求した順序で情報を取得する機能が必要です。これはさまざまな方法で行うことができますが、実際にListFragment気にするのは、 から何を受け取るかgetView()です。したがって、ListFragmentデータを受信したい順序をアダプタに伝えることができます。次に、アダプタは の位置の値に基づいてその順序でデータを提供できますgetView()

于 2013-01-10T13:03:41.387 に答える