Android Cursor IllegalStateException

时间:2017-05-24 20:11:14

标签: java android exception cursor

我在我的应用程序中使用此库作为分段RecyclerView:https://github.com/afollestad/sectioned-recyclerview

这些部分由要显示的对象的标题/名称定义。要填充数据,我从数据库中获取多个游标,将它们返回到List中:

List<String> sectionTitles = new ArrayList<>();
List<Cursor> sectionContent = new ArrayList<>();

        SQLiteDatabase db = dbHelper.getReadableDatabase();
        Cursor cursor = db.rawQuery("SELECT title FROM table GROUP BY title", null);

        cursor.moveToFirst();
        while (!cursor.isAfterLast()) {
            String title = cursor.getString(cursor.getColumnIndex("title));
            Cursor cursorContent = db.rawQuery("SELECT * FROM table WHERE title = " + title, null);

            sectionTitles.add(title);
            sectionContent.add(cursorContent);

            cursor.moveToNext();
        }
        cursor.close();

因此对于我使用第一个数组的section-titles,对于第二个数组的行。当我需要一个部分中的行数据时,我会这样调用:

Cursor cursor = sectionContent.get(section);
cursor.moveToPosition(row);
cursor.getString(...);

现在奇怪的是:我从未关闭ArrayList中的一个游标,但有时(1000个活跃用户,每天4-5次)我在调用cursor.moveToPosition(section)时收到此异常:

java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteQuery

将游标存储在列表中是否有问题?或者我错过了什么?任何帮助表示赞赏!

0 个答案:

没有答案