我有从 Internet 获取数据的ListFragment和AsyncTaskLoader 。ListFragment由BaseAdapter填充。
加载数据时,BaseAdapter用旋转进度条填充第一行。当数据被加载并且没有发生错误时,数据被填充到ListView中。但是如果发生了一些错误(我在AsyncTaskLoader中有一个标志指示该错误),则BaseAdapter用错误消息填充第一行。
问题:
当加载出错时,LoaderManager会自动尝试再次加载数据(forceLoad()
调用),这很好。但我需要通知BaseAdapter数据正在加载,以便BaseAdapter可以将错误消息更改为旋转进度条。
当LoaderManager调用时,是否有任何简单的好方法来通知片段forceLoad()
?
我的建议:
ListFragment 将实现下面的接口,并将这个 ListFragment 传递到 AsyncTaskLoader 的构造函数中。
public interface LoadingListener {
public void onLoadingStatusChanged(boolean isLoading);
}
然后我可以打电话onLoadingStatusChanged(true)
进来。我担心在 AsyncTaskLoader 中持有对 Fragment 的引用可能会泄漏该片段。loadInBackground()
onLoadingStatusChanged(false)
deliverResult(T data)