Android:为ListView适配器创建多维数组
以下是我现在拥有的:Android:为ListView适配器创建多维数组,android,Android,以下是我现在拥有的: private Object mainArray[] = {R.drawable.main_logo, "page_4"}; private Object studioArray[] = {R.drawable.studio_logo, "page_5"}; private Object gArray[] = {R.drawable.g_logo, "page_6"}; private Object venues[] = {mainArray,stu
private Object mainArray[] = {R.drawable.main_logo, "page_4"};
private Object studioArray[] = {R.drawable.studio_logo, "page_5"};
private Object gArray[] = {R.drawable.g_logo, "page_6"};
private Object venues[] = {mainArray,studioArray,gArray};
我将Vincements数组对象传递给适配器,但无法获取对象的大小:vinces.size();有更好的方法吗?看起来场馆是一个对象数组,但它不包含对象,它包含对象数组。因此,与其拥有一个对象数组,不如让场馆成为一个对象数组 也许是这样的
private Object[] venues[] = {mainArray,studioArray,gArray};
我对这个答案并不十分自信,因为我是C++程序员,但这是我首先要做的。我相信您也可以使用更复杂的数据结构,如ArrayList,它可能会为您提供比数组更多的功能。因为您使用的是数组,所以应该调用
venues.length
而不是场地。大小()
但是:
正如@arasmussen在最后几行中所说,你可以使用更复杂的
数据结构也像ArrayList
我不知道您的代码的上下文,但在这种情况下,普通数组似乎有点不合适。因为您创建了对象数组,所以不知道数组中有什么(对象除外)。我猜创建对象数组的唯一原因是希望将int和字符串存储在一起
地图更适合这种情况,因为它确实定义了您要存储的对象类型,并且还确保您不能在其中放置其他对象。此外,当您需要在数组中搜索并提取或提取值时,映射将在以后提供更多功能
我建议这样做:
Map<Integer, String> main = new HashMap<Integer, String>();
main.put(R.drawable.main_logo, "page_4");
Map<Integer, String> studio = new HashMap<Integer, String>();
main.put(R.drawable.studio_logo, "page_5");
Map<Integer, String> gArray = new HashMap<Integer, String>();
main.put(R.drawable.g_logo, "page_6");
ArrayList<Map<Integer, String>> venues = new ArrayList<Map<Integer, String>>();
venues.add(main);
venues.add(studio);
venues.add(gArray);
及
for(地图元素:场馆)
{
如果(element.containsKey(R.drawable.main_logo)){}//执行某些操作
如果(element.containsValue(“第5页”){}//执行其他操作
}
也许我有点忘乎所以了。但是我不喜欢创建对象数组,因为你不知道以后这些数组中到底是什么
venues.size(); // Get the number of venues
for(Map<Integer, String> element : venues)
{
if(element.containsKey(R.drawable.main_logo)){} // do something
else if(element.containsValue("page 5")){} // do something else
}