更改页面内容时更改片段内容,ViewPager

时间:2013-05-27 19:30:24

标签: java android asynchronous android-viewpager

我有一个ViewPager,我正在填充里面有listview的片段。关键是我必须显示非常大量的数据,而且我需要制作页面,所以我只需要很少量的数据。

我的问题是我需要在页面更改时调用asynctask来检索数据,并填写此页面的列表视图,我该怎么做?如何在任务的onPostExecute中更改listview?

PS:我使用了eclipse模板进行标签+滑动活动,所以我不发布我的代码。

1 个答案:

答案 0 :(得分:1)

我不确定我的问题是否正确,但我首先想到的是,我会使用AsyncTaskLoader而不是简单的AsyncTask。根据我的(有限)经验,当涉及Fragment / Activity生命周期/配置更改时,加载器解决了很多的问题。

Loaders guide (Android Developers)

无论您使用何种方法获取数据,在页面A中加载数据后更改页面B中列表视图的内容应该不是一个大问题:您有很多选项,只需保存活动中页面B的数据(然后使用setCurrentItem更改页面并使用setOnPageChangeListener拦截页面更改事件), 使用SQLite数据库的更优雅的方法(如果可能的话,btw将允许你对结果进行一些缓存)。

哦,我们不要忘记,如果您使用抽象类FragmentPagerAdapter的实现,您可以将数据直接从一个页面传递到另一个页面,就像这个PagerAdapter实现一样

  

将每个页面表示为片段,只要用户可以返回到页面,该片段就会持久保存在片段管理器中。

(只需使用getItem(int)来获取您需要的页面的引用。我自己从未尝试过,但是)。

希望这有帮助

编辑我刚刚发现,如果您没有使用FragmentPagerAdapter,那么获取对ViewPager中显示的当前Fragment的引用是很棘手的:如果这是您问题的根源,那么有关它的信息可以在这里找到:

Update data in ListFragment as part of ViewPager

Retrieve a Fragment from a ViewPager

Communication between ViewPager and current Fragment