2010-06-23 33 views
9

我正在嘗試自己調試問題。以後可能將它張貼如果我失敗了;-)遊標中的輸出值爲logcat? - Android

我的logcat日誌指出"android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 2"

我想用log.v("desc", cursor)顯示什麼光標的回報。有沒有辦法從它指定一個值,如光標[0]?

+0

「我想用log.v(」遞減」,光標)顯示什麼光標的回報。有沒有從中指定像光標值的方法[ 0]?「 我想知道你在這句話中的含義?你想看到整行號0(行0中所有列的值)? – Gawcio 2010-06-23 20:16:51

回答

2

你在光標上叫做moveToFirst()嗎?

+0

謝謝,這解決了我的問題。現在到下一個,耶!你是個明星! – Amit 2010-06-23 20:09:00

0

或者,如果你正在尋找光標所在在一個特定時間點,請撥打Cursor.getPosition()

看一看的Cursor API

它通常很羅嗦,但有時它有幫助。

7

如果您打算按行,你可以使用如下代碼來寫光標的內容到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()); 
} 
+0

如果列不是字符串,它可能是int double? – Sumit 2017-09-30 19:15:12

56

Android已經提供了一個特定的類只是爲了調試光標。它被稱爲DatabaseUtils

調用方法dumpCursorToString()查看遊標的內容。

這個幫助程序遍歷並打印出遊標的內容,並將遊標返回到原來的位置,這樣它就不會弄亂你的迭代邏輯。

35

使用在此之前cursor.moveToFirst()

Log.v("Cursor Object", DatabaseUtils.dumpCursorToString(cursor)) 
+0

+ import android.database.DatabaseUtils; – Kozuch 2017-11-22 18:52:52