我有ViewPager
基本上显示自定义视图ListFragment
,但数据不同。所以我认为必须有一种方法可以使用相同的ListFragment
,但根据它显示的页面用不同的数据填充它。
以Google Play商店数据为例,我想
我如何实现上述目标?第1页和第2页具有相同的数据,因此只需对其进行排序(我使用Collections.sort
进行了排序),但第3页显示ListFragment
具有相同的自定义视图,但需要发送请求到服务器下载免费的应用程序信息。
答案 0 :(得分:0)
好吧,嗯,这是我认为你的设置。
每个ListView
都是通过某种ListAdapter
提供的数据。
ViewPager
提供PagerAdapter
。
在这种情况下,您可以使用单个ListAdapter
按您想要的顺序对相同的确切信息进行排序。
您的FragmentPagerAdapter
可以为共享数据的每个片段提供相同的适配器。每个片段都可以按照它想要的顺序请求数据,并且适配器将对它进行排序,并在片段构建其视图时通过getView()
方法发送值。
在FragmentPagerAdapter
的情况下,它将换出片段并将它们保存在内存中,以便它们已经被重用。但是,他们的观点可以被破坏和重建。每次ListFragment
重建其视图时,它都会调用所提供适配器的getView()
方法。 getView()
方法根据请求的位置返回列表的每一行。
因为它具有相同的数据,所以只需要一个保存数据的适配器。但是,它需要能够按您请求的顺序获取信息。这可以通过多种方式完成,但实际上ListFragment
关注的所有内容都是getView()
收到的内容。因此,您的ListFragment
可以告诉您的适配器它想要接收数据的顺序。然后,您的适配器可以根据getView()
的位置值按顺序提供数据。