Я хочу реализовать AsyncTaskLoader в своем проекте с помощью пакета Compatibility Package, поэтому я выполнил руководство по загрузке в Android Docs.AsyncTaskLoader не запускается
Проблема заключается в том, что загрузчик не делает ничего, кажется, loadInBackground()
никогда не называют
Любой идеи о том, что случилось в моем коде? (ExpandableListFragment
расширяет Fragment
, но не отменяет любой критический метод)
Спасибо :-)
/** EDIT:
Я понял (поздно, я дебил), что AsyncTaskLoader является абстрактным классом, так что мне нужно подкласс ... м (__) м я оставляю этот вопрос в случае, если кто-то приходит сюда за мной, кто знает ...
public class AgendaListFragment extends ExpandableListFragment implements
LoaderManager.LoaderCallbacks<JSONArray> {
private TreeMap<Integer, ArrayList<Evento>> mItems = new TreeMap<Integer, ArrayList<Evento>>();
private AgendaListAdapter mAdapter;
private ProgressBar mProgressBar;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_agenda, container);
mProgressBar = (ProgressBar) root.findViewById(R.id.loading);
return root;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mAdapter = new AgendaListAdapter(getActivity());
setListAdapter(mAdapter);
getLoaderManager().initLoader(0, null, this);
}
@Override
public Loader<JSONArray> onCreateLoader(int arg0, Bundle arg1) {
mProgressBar.setVisibility(View.VISIBLE);
return new AsyncTaskLoader<JSONArray>(getActivity()) {
@Override
public JSONArray loadInBackground() {
return getDataFromService(AgendaServices.LISTADO_MES);
}
};
}
@Override
public void onLoadFinished(Loader<JSONArray> loader, JSONArray data) {
// Some stuff to turn JSONArray into TreeMap
mProgressBar.setVisibility(View.GONE);
mAdapter.setItems(mItems);
}
@Override
public void onLoaderReset(Loader<JSONArray> arg0) {
mAdapter.setItems(null);
mProgressBar.setVisibility(View.VISIBLE);
}
}
Ваш 'AsyncTaskLoader', кажется, пропускает много вещей, например' deliverResults() '. У меня есть две реализации «AsyncTaskLoader» в моем проекте «LoaderEx», который вы можете изучить для сравнения: https://github.com/commonsguy/cwac-loaderex – CommonsWare
Кажется, я беспорядок, и я не понимал, что это абстрактный класс ... Итак, теперь я знаю, почему я нашел несколько примеров, подклассифицирующих его. Спасибо! –