我正在使用 FragmentStatePagerAdapter 来设置 ViewPager 内容。在适配器的 getItem() 方法中,我调用了一个 fragment 。我想在每个 View 寻呼机 fragment 上从服务器动态显示产品图像和名称。我在 fragment 的 OnCreateView() 中调用异步任务。但是相邻产品的异步任务也会被调用。我想知道哪种方法最好?
我应该提前执行异步任务并设置 View 寻呼机的适配器吗?如果是这样,我有 1000 种产品,设置适配器将花费大量时间。
或者我应该在每个页面加载后执行异步任务吗?但是在这里,每次我来到该页面时,它都会不断从服务器加载数据。我希望数据仅在我第一次访问该页面时加载,在下一次滑动时,它应该简单地显示而不是再次从服务器获取数据。
我也希望这是一个无限 View 寻呼机适配器,这怎么可能?
提前致谢:)
最佳答案
... I want the data to be loaded only first time I visit the page, on next swipe, it should display simply instead of fetchng from server again.
将 AsyncTask
调用从 OnCreateView
移至 setUserVisibleHint
: 将在 fragment 对用户可见时执行:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
// launch your AsyncTask here, if the task has not been executed yet
if(aTask.getStatus().equals(AsyncTask.Status.PENDING)) {
aTask.execute();
}
}
}
... I would also like this to be as an infinite view pager adapter, how is this possible ?
这已经被回答了,即:
关于viewpager中的Android异步任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23990047/