カーソルを使用してコンテンツ プロバイダーにクエリを実行する方法に取り組んでいます。レコードを削除すると、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、java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257) でのサイズは 1 です
これは、カーソルが null 値を解析しようとしていることが原因だと思います。カーソルがレコードを返さない場合、残りのコードをバイパスして何も起こらない方法を見つけようとしています。
どんな助けでも大歓迎です。ありがとう