我有这个方法来填充listview
private void llenarLista() {
SQLiteDatabase bd= SQLiteDatabase.openDatabase(Environment.getExternalStorageDirectory().getAbsolutePath() + "/SuperStock/SuperStock.db", null, 0);
Cursor cursor = bd.rawQuery("select _id, cod_cliente, nom_cliente, fecha, estado_envio,estado, total_final from pedidos where estado_envio='pendiente' ORDER BY fecha DESC", null);
if(cursor.moveToFirst()) {
adaptador = new AdaptadorListaPedidos(ConsultarPedidos2.this, cursor);
lista.setAdapter(adaptador);
}
else
mensaje("Linea 66","cursor vacio");
cursor.close();
bd.close();
}
但我的光标有问题,当你运行cursor.close()时列表为空,当注释//cursor.close line()时,列表显示已填充。我在滥用光标?任何人都可以帮忙吗?
答案 0 :(得分:1)
close()
使用时Cursor
CursorAdapter
CursorAdapter
。请:
在后台线程上打开数据库一次
在后台线程上运行查询,可能与打开数据库的线程相同
完成onDestroy()
后关闭光标,例如活动的ListView
或托管Cursor
的片段
如果可以的话,在完成数据库之后关闭数据库(根据定义,在您完成从数据库获得的if
之后的某个时间)