Bal*_*nam 1 android android-custom-view android-listview android-cursor
我rawQuery在数据库类中使用,并将光标返回到我的适配器中,该适配器CursorAdapter与自定义ListView项一起使用。
在屏幕上绘制视图后,此光标会自动关闭还是如何管理此光标?在这种情况下,最佳做法是什么?
如果关闭DB类中的此光标,则无法从适配器访问它们。
感谢您的时间和精力为我提供帮助。
编辑以添加一些代码片段以更好地理解
这是我的活动代码:
calAdapter = new CalendarListAdapter(context, dbHelper.getAllCalendars());
drawerList.setAdapter(calAdapter);
Run Code Online (Sandbox Code Playgroud)
这是我的光标
public Cursor getAllCalendars() {
String query = "SELECT calendarId as _id, calendarName, calState, calShow FROM "
+ TABLE_CALENDAR_LIST;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(query, null);
return cursor;
}
Run Code Online (Sandbox Code Playgroud)
设置新光标后,可以关闭旧光标。swapCursor()返回旧的Cursor,null如果没有设置游标,则返回,null如果您尝试交换先前设置的游标的相同实例,则返回。知道这一点,您可以尝试这样的事情:
Cursor oldCursor = yourAdapter.swapCursor(newCursor);
if(oldCursor != null)
oldCursor.close();
Run Code Online (Sandbox Code Playgroud)
请注意,在使用加载程序(LoaderManager.LoaderCallbacks)时,框架将关闭旧游标。这就是文档所说的:
onLoadFinished:
一旦知道应用程序不再使用它,加载程序就会释放数据。例如,如果数据是来自CursorLoader的游标,则不应自己对其调用close()。...
| 归档时间: |
|
| 查看次数: |
3132 次 |
| 最近记录: |