私はAndroidにかなり慣れていないため、次のことを達成するための正しい/最良の方法を見つけるのが難しいと感じています:
ActionBarSherlock を使用して、それぞれがフラグメントをロードする一連のタブを作成しています。これらの 1 つは ListFragment (実際には SherlockListFragment) です。新しいスレッドを使用してリストをロードすることから始めましたが、リストがロードされる前に別のタブに切り替えるまで、すべて問題ないように見えました。次に、フラグメントがアクティブではないと推測するため、 SetListShown(true) で失敗します。
public override void OnActivityCreated(Bundle savedInstanceState)
{
base.OnActivityCreated(savedInstanceState);
SetListShown(false);
var listView = (ListView) Activity.FindViewById(Android.Resource.Id.List);
Button loadMore = new Button(Activity);
loadMore.SetText("Load more articles", TextView.BufferType.Normal);
loadMore.Click += LoadMoreArticles;
listView.AddFooterView(loadMore);
ThreadPool.QueueUserWorkItem((obj) => {
var articles = _articleService.GetArticles(0, 10, DateTime.UtcNow);
_items = articles.Select(x => new ArticleSummaryModel(x)).ToList();
Activity.RunOnUiThread(() => {
_adapter = new ArticleList_Adapter(Activity, _items);
ListAdapter = _adapter;
SetListShown(true);
});
});
}
私がやりたいのは、タブが初めて開かれたときにデータの読み込みを開始し、標準の進行状況インジケーターを表示してから、リストが表示され、進行状況インジケーターが削除されることです。データの読み込み中にタブが変更された場合、そのタブが再び開かれたときに表示されるはずです。
私が見逃していたこれを達成する簡単な方法があれば、素晴らしいです! Androidではそれは不可能です。私もそれを知りたいので、試すのをやめることができます;-)
AsyncTask、AsyncTaskLoader、IntentService などについて多くのことを読みましたが、何を使用する必要があるのか まったく明確ではなく、これらのいずれかが実際に私が望むものを達成するでしょう!
参考までに、私はAndroid用のモノとv2.3+をサポートする互換パックを使用していますが、Javaの例などを翻訳できることを願っています.
よろしくお願いします!ロビン