2011-03-17 115 views
0

我有一個菜單結構,用於輸出收藏夾配置項的列表。將ArrayList中的字符串對象轉換爲Array數組

在視圖示例中的Android SDK中,有一個我希望使用的視圖示例,稱爲ExpandableList1.java。 爲了使用該視圖,我必須通過String[] groups結構和String[][] children結構。

我沒有問題使用groups.toArray將菜單對象中的字符串列表轉換爲數組。我的問題是將收藏夾項目轉換爲數組數組。最喜歡的項目是包含在菜單對象中的數組列表。

代碼的相關部分粘貼在這裏。首先,我們稱之爲MyExpandableListAdapter與字符串數組:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    ArrayList<String> favouriteMenuList = Main.menuList.getFavouriteMenusFullPath();   

    mAdapter = new MyExpandableListAdapter(favouriteMenuList); 
    setListAdapter(mAdapter); 
    registerForContextMenu(getExpandableListView()); 
} 

下一頁MyExpandableListAdapter,它的構造是展示其中數組轉換情況:

public class MyExpandableListAdapter extends BaseExpandableListAdapter { 
    // Sample data set. children[i] contains the children (String[]) for groups[i]. 
    // private String[] groups = { "People Names", "Dog Names", "Cat Names", "Fish Names" }; 
    private String [] groups; 
    private String[][] children = { 
      { "Arnold", "Barry", "Chuck", "David" }, 
      { "Ace", "Bandit", "Cha-Cha", "Deuce" }, 
      { "Fluffy", "Snuggles" }, 
      { "Goldy", "Bubbles" } 
    };   

    public MyExpandableListAdapter(ArrayList<String> groups) {   
     this.groups = groups.toArray(new String[groups.size()]); 
    } 

正如你可以在上面的代碼中看到的片斷是沒有問題的轉換爲String[] groups。我的想法是迭代菜單對象,提取收藏夾列表,然後?我將如何在Java中構建一個動態數組,因爲數組大小如此固定。

這裏是外環我心目中:

public ArrayList<FavouritesObject> getFavouriteItems() { 
    ArrayList<FavouritesObject> favouritesList = new ArrayList<FavouritesObject>(); 

    for (MenuObject m : allMenusList) { 
     if (m.isFavourite) { 
      favouritesList.add(m.getFavouriteItems()); 
     }   
    } 
    return favouritesList; 
} 
+0

使用列表清單,然後迭代列表並使用'toArray'? – 2011-03-17 09:09:38

+0

由於性能原因,數組的大小最好是固定大小,那麼計算數組的大小,創建數組的大小,然後向它添加子數組不是很好嗎? – 2011-03-17 09:10:17

+0

不相關。 @Eugene van der Merwe,既然你擁有Snowball.co.za,你能否爲java應用程序提供託管服務?最好是GlassFish,Tomcat,JBoss? – 2011-03-17 09:11:20

回答

1

假設例如你有一個List<Menu>每個Menu可以返回的收藏List<String>,我相信你想這樣的:

String[][] children = new String[menus.size()][]; 
for (int i = 0; i < menus.size(); i++) { 
    List<String> favourites = menus.get(i).getFavourites(); 
    children[i] = favourites.toArray(new String[favourites.size()]); 
} 
+0

這看起來非常有希望,我會在接下來的三個小時內嘗試並讓你知道。 – 2011-03-17 09:31:10

+0

嚇人真棒!像魅力一樣工作。謝謝。 – 2011-03-17 17:25:54

2

使用ArrayList(res)動態添加項目並將其轉換爲數組(mString)。

ArrayList<String> res = new ArrayList<String>(); 
res.add("Item"); 
String[] mString = (String[]) res.toArray(new String[res.size()]);