我有一个 ViewPager,我正在填充其中有一个 ListView 的 fragment 。关键是我必须显示大量数据,并且我需要制作页面,所以我只请求少量数据。
我的问题是,当页面更改时,我需要调用 asynctask 来检索数据,并填充此页面的 ListView ,我该怎么做?如何在任务的 onPostExecute 中更改该 ListView ?
PS:我使用了 Eclipse 模板来进行选项卡 + 滑动 Activity ,所以我没有发布我的代码。
最佳答案
我不确定我是否正确理解了您的问题,但我首先想到的是我会使用 AsyncTaskLoader 而不是简单的 AsyncTask。根据我(有限的)经验,加载器在 fragment/Activity 生命周期/配置更改方面解决了很多问题。
Loaders guide (Android Developers)
无论您使用什么方法来获取数据,在加载页面 A 中的数据后更改页面 B 中 ListView 的内容应该不是什么大问题:您有很多选择,从简单地保存Activity 中页面 B 的数据(然后使用 setCurrentItem 更改页面并使用 setOnPageChangeListener 拦截页面更改事件), 使用 SQLite 数据库的更优雅的方法(顺便说一句,如果可能的话,它允许您对结果进行一些缓存)。
哦,我们不要忘记,如果您使用的是抽象类 FragmentPagerAdapter 的实现您可以将数据直接从一个页面传递到另一页面,就像此 PagerAdapter 实现
represents each page as a Fragment that is persistently kept in the fragment manager as long as the user can return to the page.
(只需使用 getItem(int) 来获取您需要的页面的引用。我自己从未尝试过这个)。
希望这有帮助
编辑我刚刚发现,如果您不使用 FragmentPagerAdapter,获取对 ViewPager 中显示的当前 Fragment 的引用会很棘手:如果这是问题的根源,请提供有关如何解决的信息可以在这里找到:
Update data in ListFragment as part of ViewPager
关于java - 页面更改时更改 fragment 内容,ViewPager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16779435/