20

私は自分で問題をデバッグしようとしています。私が失敗した場合は後で投稿するかもしれません;-)

私のlogcatログの状態"android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 2"

log.v("desc", cursor)カーソルが返すものを表示するために使用したいと思います。cursor[0] のようにそこから値を指定する方法はありますか?

4

5 に答える 5

70

Android は、カーソルをデバッグするためだけに特定のクラスを提供しています。これはDatabaseUtilsと呼ばれます。

メソッドdumpCursorToString()を呼び出して、カーソルの内容を表示します。

このヘルパーはループして Cursor の内容を出力し、カーソルを元の位置に戻して、反復ロジックを台無しにしないようにします。

于 2012-10-28T03:59:42.500 に答える
13

カーソルの内容を行ごとに logcat に書き込む場合は、次のコードを使用できます。

if (cursor.moveToFirst()) {
    do {
        StringBuilder sb = new StringBuilder();
        int columnsQty = cursor.getColumnCount();
        for (int idx=0; idx<columnsQty; ++idx) {
            sb.append(cursor.getString(idx));
            if (idx < columnsQty - 1)
                sb.append("; ");
        }
        Log.v(TAG, String.format("Row: %d, Values: %s", cursor.getPosition(), 
            sb.toString()));
    } while (cursor.moveToNext());
}
于 2010-06-23T20:28:15.600 に答える
6

moveToFirst()Cursorを呼び出す必要があります。

于 2010-06-23T20:05:03.767 に答える
0

または、特定の時点でカーソルがどこにあるかを探している場合は、呼び出しますCursor.getPosition()

Cursor APIを見てください。

多くの場合、非常に冗長ですが、役立つ場合もあります。

于 2010-06-23T20:11:28.743 に答える