私はコード内にデータベースの内容をチェックするメソッドを持っています。以下はコードですCursorIndexOutOfBoundsException on cursor.getString(i)
if(rowId >= 1){
Cursor cursor = adapter.fetchAllQRurl();
int length = cursor.getCount();
for(int i=0; i<length ; i++){
if(contents.equals(cursor.getString(i))){
Toast.makeText(this, "The entry already exists.",Toast.LENGTH_LONG).show();
}
}
ただし、私はいつも以下のエラーが表示されます。私は "cursor.getString(i)"に何が間違っていたのか分かりません 私のコードで何かが恋愛しましたか?
android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 5
at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580)
at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214)
at android.database.AbstractWindowedCursor.getShort(AbstractWindowedCursor.java:69)
私は、このいずれかを試してみました:(int型のためにi = 0; i <= length; i ++){if(cursor.moveToFirst()){do {String data = cursor.getString(1); Toast.makeText(this、data、Toast.LENGTH_LONG).show(); } while(cursor.moveToNext()); }} cursor.close();しかし、私はjava.lang.IllegalStateExceptionを取得しています:行0からフィールドスロットを取得するcol 1がandroid.database.CursorWindow.getString_native(ネイティブメソッド)android.database.CursorWindow.getString(CursorWindow.java:363)で失敗しました – androidnewbie
なぜですかこのカーソルコードをforループの中に入れて、置く必要はありません。 –
columnIndexはハードコードされるべきでないためです。ですから、私のやり方は、カーソルコードをforループの中に入れて、Stringを取得する列を指定することです。別の質問ですが、行番号を指定するにはどうすればよいですか?例外は「行0列1からフィールドスロットを取得する」と言っていますが、これを正しく指定する必要がありますか?私はたくさんの質問があれば申し訳ありません。私はこれで新しいです。ありがとう。 – androidnewbie