20

我正在尝试自己调试问题。如果我失败了可以稍后发布;-)

我的 logcat 日志状态"android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 2"

我想log.v("desc", cursor)用来显示光标返回的内容。有没有办法像 cursor[0] 一样从中指定一个值?

4

5 回答 5

70

Android 提供了一个专门用于调试 Cursors 的类。它被称为DatabaseUtils

调用方法dumpCursorToString()来查看光标的内容。

这个助手循环并为你打印出光标的内容,并将光标返回到它的原始位置,这样它就不会弄乱你的迭代逻辑。

于 2012-10-28T03:59:42.500 回答
60

以前用这个cursor.moveToFirst()

Log.v("Cursor Object", DatabaseUtils.dumpCursorToString(cursor))
于 2014-01-21T10:44:39.833 回答
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 回答