java - 页面更改时更改 fragment 内容,ViewPager

标签 java android asynchronous android-viewpager

我有一个 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

Retrieve a Fragment from a ViewPager

Communication between ViewPager and current Fragment

关于java - 页面更改时更改 fragment 内容,ViewPager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16779435/

相关文章:

asynchronous - Rust lazy_static 与 async/await?

java - "Closing"阻塞队列

java - 使用ignite集群时如何处理严重故障?

c++ - Android:静态链接到 libstdc++

javascript - HttpRequestHandler : Sending a pdf file in response

c# - 为异步方法编写包装器

javascript - 如何将 axios 响应数据添加到数组中

java - JPanel 大小在开始时未知

java - GridBagLayout 2 JPanels - 比其他宽度小一个

android - 后退按钮关闭两个 Activity ?