Я довольно новый для 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 и т. Д., Но я совсем не знаю ясно, что мне нужно использовать, и любой из них действительно достигнет того, чего я хочу!
FYI Я использую моно для андроид и совместимости пакета для поддержки v2.3 +, но можем надеяться перевести любые Java примеры и т.д.
Большое спасибо заранее! Robin