尝试检索本地数据库中表的所有条目时出现此错误:
java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.contactappca2 / com.example.contactappca2.ViewActivity}:java.lang.IllegalStateException:无法从CursorWindow读取第0行,第0列。在从中访问数据之前,请确保Cursor已正确初始化。
引起:java.lang.IllegalStateException:无法从CursorWindow读取第0行,第0列。在从中访问数据之前,请确保Cursor已正确初始化。
这是我在DbAdapter类中的方法,我在其中检索条目:
public List<Contact>getAllContacts(){
contacts = new ArrayList<Contact>();
cursor = db.query(TABLE_NAME, new String [] {COLUMN_NAME, COLUMN_NUMBER, COLUMN_EMAIL, COLUMN_IMG}, null,null,null,null,null);
if(cursor.moveToFirst()){
do{
c = new Contact();
c.setName(cursor.getString(0), null);
c.setNumber(cursor.getString(1));
c.setEmail(cursor.getString(2));
byte [] blob = cursor.getBlob(cursor.getColumnIndex(COLUMN_IMG));
ByteArrayInputStream inputStream = new ByteArrayInputStream(blob);
Bitmap b = BitmapFactory.decodeStream(inputStream);
c.setPicture(b);
contacts.add(c);
}while(cursor.moveToNext());
}
return contacts;
}
任何想法我做错了什么?非常感谢。
答案 0 :(得分:0)
要做的一件事是确保你的其他Cursors
在你制作这个之前关闭(为了释放记忆)。
但是如果你试图将你的内容整理成块,你会看到更好的结果,这很大程度上是因为无休止地加载列表视图或类似的东西。
但我真的不得不说,如果我在第一时间遇到这样的问题,我就会放弃使用SQLite
来保存像这样的完整物体的想法。更好的方法是将这些图像存储在SD卡或本地存储器中,只保存图像位置或至少保存数据库中的名称,然后以这种方式管理您的内容。