Получить курсор от SimpleCursorAdapter

У меня есть деятельность, которая реализует класс курсора LoaderManager.LoaderCallbacks. У меня есть эта функция, которая получает данные из SQlite.

@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
    switch (id) {
        case ITEM_LOADER_ID:
            // The uri points to Item, which is the items in the inventory
            Uri uri = InventoryContract.Item.contentUriWithAccount(mCloverAccount);
            String sortOrder = InventoryContract.Item.NAME;

            String selection = "";

            try {

                selection = InventoryContract.ItemColumns.CODE;

            catch (Exception e){
                Log.e("Error",e.toString());
            }
            return new CursorLoader(HomeActivity.this, uri, null, selection, null, sortOrder);
        default:
            // An invalid id was passed in
    }
    throw new IllegalArgumentException("Unknown Loader ID");
}

У меня есть SimpleCursorAdapter

SimpleCursorAdapter adapter = new SimpleCursorAdapter(
            this,
            android.R.layout.simple_list_item_2,
            null,
            new String[]{InventoryContract.Item.NAME, InventoryContract.Item.PRICE_TYPE},
            new int[]{android.R.id.text1, android.R.id.text2},
            0
    );

Это функционально и получение данных, но я хочу получить курсор, чтобы я мог получить всю информацию и сохранить ее в List для последующего выполнения. Я ищу все связанные ссылки для получения курсора и нашел код, который:

    Cursor c = adapter.getCursor();
    try {

        int i = 0;
        while (c.moveToNext()){
            Log.e("In Log Cursor",c.getString(i));
            i++;
        }
        c.close();
    }
    catch (Exception e){
        Log.e("Error",e.toString());
    }            

но он получает нулевой курсор. Я хочу получить эти данные и сделать собственный адаптер для дальнейших манипуляций. Пожалуйста, помогите мне найти решение или любой другой способ получить эти данные из SQlite и сохранить их в виде Списка, чтобы я мог использовать их после получения и установить их в RecyclerView. Заранее спасибо.

1 ответ

Я думаю, что это старый пост, но я подумал, что он может кому-то помочь. Вы можете реализовать его шаги в методе onloadFinshed

public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
    adapter.swapCursor(data);
        /*
        data.moveToFirst();

    if (data.getCount() != 0) {
        for (int i = 0; i < data.getCount(); i++) {
            String s = data.getString(data.getColumnIndex(column no));
            data.moveToNext();
        }
    }


}
Другие вопросы по тегам