2013-05-27 122 views
0

我有一个ViewPager,我填充了具有listview内部的片段。关键是我必须展示大量的数据,而且我需要制作页面,所以我只需要少量的数据。页面更改时更改片段内容,ViewPager

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

PS:我已经使用了一个eclipse模板的标签+滑动活动,所以即时通讯不张贴我的代码。

+0

AsyncTask(Activity)和碎片之间的通信是你的问题? –

+0

是的,这是我的问题。 – Edgar

回答

1

我不确定自己的问题是否正确,但我想到的第一件事是我将使用AsyncTaskLoader而不是简单的AsyncTask。从我的(有限)经验来看,当涉及到碎片/活动生命周期/配置更改时,装载机可以解决问题批次

Loaders guide (Android Developers)

不管你使用什么方法来获取数据,加载页面A的数据后改变B页面列表视图的内容不应该是太大的问题:你有充足从简单地将页面B的数据保存到活动中(然后将页面更改为setCurrentItem,并将页面更改事件拦截到setOnPageChangeListener), 转换为采用SQLite数据库的更优雅的方法(btw允许您执行一些操作缓存结果,如果可能的话)。

哦,让我们不要忘记,如果你使用的是抽象类的实现FragmentPagerAdapter你也许可以直接从一个页面传递数据给对方,因为这PagerAdapter实施

代表每一页作为片段,只要用户可以返回页面,片段就会一直保存在片段管理器中。

(只使用getItem(int)得到你需要的页面的引用。我从来没有尝试过这个自己,虽然)。

希望这有助于

编辑我刚刚发现,让在ViewPager显示的当前片段的引用,如果你不使用FragmentPagerAdapter是棘手:如果这是你的问题的根源,信息它是如何做到可以在这里找到:

Update data in ListFragment as part of ViewPager

Retrieve a Fragment from a ViewPager

Communication between ViewPager and current Fragment

+0

感谢您的提示,我会看看加载器指南,但是,我知道我可以用SetOnPageChangeListener做些事情,但我的问题是,我如何告诉“更改片段B上的ListView”到AsyncTask。数据必须在页面更改时正确调用 – Edgar

+1

我想我现在已经得到了您的问题,并且我已扩展我的答案以匹配 – Rick77

+0

谢谢您!我将使用此功能。 – Edgar