1

我从 Cursor 得到一个字符串数据,但我不知道如何将它转换为数组。我怎样才能做到这一点?

String[] mString;
for(cursor.moveToFirst(); cursor.moveToNext(); cursor.isAfterLast()) {
   mTitleRaw = cursor.getString(cursor.getColumnIndex(SBooksDbAdapter.KEY_TITLE_RAW));
}
mString = mTitleRaw ????
4

2 回答 2

4

您可以像这样将 mTitleRaw 包装到单个元素数组中:

mString = new String[] { mTitleRaw };

更新:您可能想要的是将所有行添加到单个数组中,您可以使用 ArrayList 执行此操作,然后变回 String[] 数组,如下所示:

ArrayList strings = new ArrayList();
for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
   String mTitleRaw = cursor.getString(cursor.getColumnIndex(SBooksDbAdapter.KEY_TITLE_RAW));
   strings.add(mTitleRaw);
}
Sting[] mString = (String[]) strings.toArray(new String[strings.size()]);
于 2009-09-01T04:30:41.340 回答
1

正如 Pentium10 指出的那样,marshall_law 的代码中有一个错误。它跳过光标中的第一个元素。这是一个更好的解决方案:

    ArrayList al = new ArrayList();
    cursor.moveToFirst();
    while(!cursor.isAfterLast()) {
        Log.d("", "" + cursor.getString(cursor.getColumnIndex(ProfileDbAdapter.KEY_PROFILE_NAME)));
        String mTitleRaw = cursor.getString(cursor.getColumnIndex(ProfileDbAdapter.KEY_ID));
        al.add(mTitleRaw);
        cursor.moveToNext();
    }

正如我所说,这段代码将包括光标中的第一个元素。

于 2011-07-01T15:09:11.327 回答