Android 查询没有记录的内容提供商?

Android 查询没有记录的内容提供商?,android,null,cursor,android-contentresolver,Android,Null,Cursor,Android Contentresolver,我正在研究一种使用光标查询内容提供商的方法。删除记录后,它调用loadfromProvider方法并刷新arraylist。内容提供者通常有记录,但是当我删除所有记录并且查询自动运行时,它会抛出异常。以下是我的方法: private void loadFromProvider() { // Clear the existing array list EQlist.clear(); ContentResolver cr = getContentResolver()

我正在研究一种使用光标查询内容提供商的方法。删除记录后,它调用
loadfromProvider
方法并刷新arraylist。内容提供者通常有记录,但是当我删除所有记录并且查询自动运行时,它会抛出异常。以下是我的方法:

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)

我认为这是因为游标试图解析空值。我试图找出一种方法,如果光标没有带任何记录返回,它将绕过代码的其余部分,而不执行任何操作


任何帮助都将不胜感激。谢谢

如果没有记录,光标应该是空的。如果光标为空,则
c.moveToFirst()
将返回
false
,您将不会进入do while循环

调试应用程序并确保光标为空。

正确无误。另见:相关讨论。在这里的例子中,我认为错误发生在代码的后面。如果遇到if()块,请执行c.close(),稍后可能会出现错误,试图使用(未)填充的空数据集。