1

Cursor から String データを取得しましたが、Array に変換する方法がわかりません。どうやってやるの?

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 を 1 つの要素配列にラップするだけです。

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 に答える