android:光标会忽略表中的第一行

lor*_*d.h 0 java android

我有一个数据库,我想使用游标收集字符串[]中一列的所有对象...所以这是我的代码:

c.moveToFirst();
int i = 0;
String[] addresses = new String[c.getCount()];
while(c.moveToNext()) {
    addresses[i] = c.getString(c.getColumnIndex("address"));
    i++;
}
c.close();
Run Code Online (Sandbox Code Playgroud)

但是当我使用这段代码时:

StringBuilder builder = new StringBuilder();
for(String in : addresses) {
    builder.append("" + in + " ");
}
Toast.makeText(getApplicationContext(), builder, Toast.LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)

用于显示我的字符串[]中的所有对象,我得到了:

234567null..但是正确的答案应该是这样的:1234567..!

所以我的错误在哪里?... 谢谢!!

Dav*_*jak 5

tl; dr删除对的调用moveToFirst(),它将起作用。

一个新的Cursor从位置开始-1,通过调用moveToFirst它将移动到位置0

如果调用while(moveToNext) 使用moveToFirst第一个索引,则在循环中将被1跳过0

最好使用以下方法完成游标循环

cursor.moveToPosition(-1); // in case you accessed it before
while(cursor.moveToNext()) {
    // ...
}
cursor.close();
Run Code Online (Sandbox Code Playgroud)