2009-09-01 379 views
1

我從Cursor獲取String數據,但我不知道如何將其轉換爲Array。我怎樣才能做到這一點?將字符串轉換爲數組(android)

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

回答

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()]); 
+1

你確定這是好的嗎?你的第一個元素被跳過了,不應該是:for(c.moveToFirst();!c.isAfterLast(); c.moveToNext()) – Pentium10 2010-03-04 21:53:19

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(); 
    } 

正如我所說的,這段代碼將包含遊標中的第一個元素。