0
我正在研究使用游标查询内容提供者的方法。删除记录后,它会调用loadfromProvider
方法并刷新数组列表。内容提供者通常在其中有记录,但是,当我删除所有记录并且查询自动运行时,它会抛出异常。这里是我的方法:查询没有记录的内容提供者?
private void loadFromProvider() {
// Clear the existing array list
EQlist.clear();
ContentResolver cr = getContentResolver();
// Return all the saved records
Cursor c = cr.query(EQProvider.CONTENT_URI, null, null, null, null);
if (c.moveToFirst()) {
do {
String details = c.getString(EQProvider.DETAILS_COLUMN);
String linkString = c.getString(EQProvider.LINK_COLUMN);
EQli q = new EQli(details, linkString);
addEQToArray(q);
} while(c.moveToNext());
}
c.close();
}
当我运行这个与内容提供商没有记录它抛出如下:
java.lang.IndexOutOfBoundsException:无效指数1,大小为1 在java.util中.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
我认为这是由于游标试图解析空值。我试图找出一种方式,如果光标不回来任何记录,它绕过其余的代码,并没有发生任何事情。
任何帮助,将不胜感激。谢谢
是正确的。请参阅:http://stackoverflow.com/questions/5122099/sqlite-delete-last-row-refresh-not-working/5122218#5122218进行相关讨论。在这种情况下,我认为错误在代码中稍后发生。通过if()块,执行c.close(),稍后可能会出现错误,尝试使用您(未填写)的空数据集。 – jcwenger 2011-04-10 19:03:21