Tôi muốn triển khai AsyncTaskLoader trong dự án của mình bằng Gói Tương thích, vì vậy tôi đã làm theo hướng dẫn Trình tải trong Tài liệu Android.AsyncTaskLoader không chạy
Vấn đề là Loader không có gì, có vẻ như loadInBackground()
không bao giờ được gọi là
Bất kỳ ý tưởng về những gì sai trái trong mã của tôi? (ExpandableListFragment
kéo dài Fragment
, nhưng không ghi đè lên bất kỳ phương pháp quan trọng)
Cảm ơn bạn :-)
/** EDIT:
tôi nhận ra (cuối, tôi là một moron) mà AsyncTaskLoader là một lớp trừu tượng vì vậy tôi cần phải phân lớp nó ... m (__) m tôi rời khỏi câu hỏi trong trường hợp ai đó đến đây phía sau tôi, ai mà biết được ...
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' của bạn có vẻ thiếu nhiều thứ, như 'deliverResults()'. Tôi có hai triển khai 'AsyncTaskLoader' trong dự án' LoaderEx' của bạn mà bạn có thể muốn kiểm tra cho mục đích so sánh: https://github.com/commonsguy/cwac-loaderex – CommonsWare
Có vẻ như tôi là một mớ hỗn độn và tôi đã không nhận ra nó một lớp trừu tượng ... Vì vậy, bây giờ tôi biết tại sao tôi chỉ tìm thấy một vài ví dụ phân lớp nó. Cảm ơn bạn! –