【发布时间】:2011-03-17 09:05:53
【问题描述】:
我有一个菜单结构,可以输出最喜欢的配置项列表。
在视图示例中的 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()]);
}
正如您在上面的代码 sn-p 中看到的那样,转换为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;
}
【问题讨论】:
-
使用列表列表,然后迭代列表并使用
toArray? -
由于性能原因,数组最好采用固定大小,计算数组的大小,使用该大小创建它,然后将子数组添加到其中不是很好吗?
-
不相关。 @Eugene van der Merwe,既然您拥有 Snowball.co.za,您能否为 Java 应用程序提供托管服务?最好是 GlassFish、Tomcat、JBoss?
标签: java multidimensional-array arraylist