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按您想要的任何顺序对相同的确切信息进行排序的单个。

FragmentPagerAdapter可以为共享数据的每个片段提供相同的适配器。每个片段可以按照它想要的任何顺序请求数据,并且适配器将对其进行排序并getView()在片段构建其视图时通过该方法发送值。

在 的情况下FragmentPagerAdapter,它将换出片段并将它们保存在内存中,以便它们已经被您重用。然而,他们的观点可以被破坏和重建。每次ListFragment重建它的视图时,它都会调用getView()提供的适配器的方法。该getView()方法根据请求的位置返回列表的每一行。

因为都是相同的数据,所以您只需要一个适配器来保存数据。但是,它需要能够按照您请求的顺序获取信息。这可以通过多种方式完成,但真正ListFragment关心的是它从getView(). 因此,您ListFragment可以告诉您的适配器它想要接收数据的顺序。然后您的适配器可以根据 的位置值按该顺序提供数据getView()

于 2013-01-10T13:03:41.387 回答