簡體   English   中英

將ArrayList中的字符串對象轉換為數組數組

[英]Convert String Objects in ArrayList to Array of Arrays

我有一個菜單結構,可輸出收藏夾配置項的列表。

在Android SDK的Views示例中,有一個我想使用的View示例,稱為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;
}

使用ArrayList( res )動態添加項目並將其轉換為Array( mString )。

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

假設您有一個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()]);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM