gpt4 book ai didi

android - AsynLoaderTask 和 ViewPager

转载 作者:太空狗 更新时间:2023-10-29 15:09:47 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com