作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个带有 FragmentStatePagerAdapter 的 ViewPager。在 ViewPager fragment 的 onViewCreated 方法中,我调用 LoadManager 的 initLoader 方法来启动 AsyncTaskLoader,如下所示
public void onViewCreated(final View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
list = (ListView) view.findViewById(R.id.list);
list.setEmptyView(view.findViewById(R.id.empty));
getLoaderManager().initLoader(0, null, this).forceLoad();
}
fragment 当然实现了LoaderCallbacks,下面是相关方法的实现:
@Override
public Loader<List<String>> onCreateLoader(int id, Bundle args) {
logger.debug("Created loader");
return new AsyncTaskLoader<List<String>>(getActivity()) {
@Override
public List<String> loadInBackground() {
return getResults();
}
};
}
@Override
public void onLoadFinished(Loader<List<String>> loader,
List<String> data) {
logger.debug("loader finished");
if (data != null) {
adapter = new CustomListAdapter(getActivity());
list.setAdapter(adapter);
adapter.addAll(data);
}
}
@Override
public void onLoaderReset(Loader<List<String>> loader) {
}
我遇到的问题是,对于第一页,一切都按预期工作,但对于后续页面,我看到 onCreateLoader 调用已完成,调用了 AsyncTaskLoader 的 loadInBackground 方法,但未调用 onLoadFinished 并且因此现在结果已经交付。
我正在使用 Android 支持库。
有谁知道我做错了什么吗?
最佳答案
所以我刚刚遇到了这个问题,看来你做的和我做的一模一样。看起来如果您的加载程序都使用相同的 ID(在您的示例中为 0),如果一个页面加载时间比另一个页面加载时间长,它们将重新启动并在分页时互相踩踏。希望这仍然与遇到此问题的人相关!
关于android - AsynLoaderTask 和 ViewPager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17885053/
我有一个带有 FragmentStatePagerAdapter 的 ViewPager。在 ViewPager fragment 的 onViewCreated 方法中,我调用 LoadManage
我是一名优秀的程序员,十分优秀!