Android:在viewpager中重用listfragment

时间:2013-01-10 11:53:01

标签: android android-fragments android-viewpager android-listfragment

我有ViewPager基本上显示自定义视图ListFragment,但数据不同。所以我认为必须有一种方法可以使用相同的ListFragment,但根据它显示的页面用不同的数据填充它。

以Google Play商店数据为例,我想

  1. 第1页 - 按价格升序对付费应用进行排序
  2. 第2页 - 按价格下降付费应用
  3. 第3页 - 按评级下降排序免费应用
  4. 我如何实现上述目标?第1页和第2页具有相同的数据,因此只需对其进行排序(我使用Collections.sort进行了排序),但第3页显示ListFragment具有相同的自定义视图,但需要发送请求到服务器下载免费的应用程序信息。

    谢谢你! :)

1 个答案:

答案 0 :(得分:0)

好吧,嗯,这是我认为你的设置。

每个ListView都是通过某种ListAdapter提供的数据。

ViewPager提供PagerAdapter

在这种情况下,您可以使用单个ListAdapter按您想要的顺序对相同的确切信息进行排序。

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

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

因为它具有相同的数据,所以只需要一个保存数据的适配器。但是,它需要能够按您请求的顺序获取信息。这可以通过多种方式完成,但实际上ListFragment关注的所有内容都是getView()收到的内容。因此,您的ListFragment可以告诉您的适配器它想要接收数据的顺序。然后,您的适配器可以根据getView()的位置值按顺序提供数据。