Android ListFragment Управление курсором - PullRequest
1 голос
/ 08 марта 2011

Я хочу использовать ListFragment и Loader Class для моего приложения для Android. (SDK уровня сота, но Google выпускает пакет сопоставимости)

во фрагменте, имеет ли он управляющий API-интерфейс курсора с жизненным циклом Fragmemt

Активность имеет " startManagingCursor (Курсор c) "

или

Фрагмент автоматического управления курсором в его жизненном цикле?

1 Ответ

2 голосов
/ 20 июля 2011

Я не уверен, что правильно понял ваш вопрос, но если вы спрашиваете, управляется ли ваш курсор автоматически в ListFragment при использовании Loader, то я считаю, что ответ: да, это так.

В вашем ListFragment вы должны реализовать интерфейс LoaderManager.LoaderCallbacks, а затем использовать initLoader () и restartLoader () из LoaderManager для управления вашими данными и курсором в течение жизненного цикла ListFragment.Основной адаттер должен поддерживать метод swapCursor (), чтобы он работал лучше.

Что-то вроде:


class Foo extends ListFragment implements LoaderManager.LoaderCallbacks {

    private MyAdapter   mAdapter;

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        mAdapter = new MyAdapter();
        getLoaderManager().initLoader(0, null, this);
    }

    @Override
    public Loader onCreateLoader(int id, Bundle args) {
        Uri MY_URI = "your data URI goes here";
        return new CursorLoader(getActivity(), MY_URI, MY_PROJECTION, selection, selectionArgs, sortOrder);
    }

    @Override
    public void onLoadFinished(Loader loader, Cursor data) {
        mAdapter.swapCursor(data);
    }

    @Override
    public void onLoaderReset(Loader loader) {
        mAdapter.swapCursor(null);
    }
}
...