正確的做法我是很新,Android和我發現很難找出正確的/最佳方式完成以下任務:用於異步ListFragment
我使用ActionBarSherlock有一組選項卡每個加載一個片段。其中一個是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示例等
提前非常感謝! 羅賓