我有一个菜单结构,可以输出喜欢的配置项列表。
在Views示例的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 :(得分:2)
使用ArrayList(res
)动态添加项目并将其转换为数组(mString
)。
ArrayList<String> res = new ArrayList<String>();
res.add("Item");
String[] mString = (String[]) res.toArray(new String[res.size()]);
答案 1 :(得分: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()]);
}