インターネットからデータを取得する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)
できloadInBackground()
ます。AsyncTaskLoader で Fragment への参照を保持すると、そのフラグメントがリークする可能性があります。onLoadingStatusChanged(false)
deliverResult(T data)