[英]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.