正确的做法我是很新,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示例等
提前非常感谢! 罗宾