我将数组字符串定义为String.xml。然后我将它们添加到ArrayList中。但我有一个空列表。
String.xml:
<array name="restaurant_names">
<item >Tobaz</item>
<item >Lozanna</item>
<item >Vetameen</item>
<item >Baharat</item>
</array>
Java类:
ArrayList<RestaurantObjects> restaurant;
String name;
String type;
restaurant = new ArrayList<>();
for(int i=0;i>=R.array.restaurant_names;i++) {
name = getResources().getStringArray(R.array.restaurant_names)[i];
type = getResources().getStringArray(R.array.restaurant_names)[i];
restaurant.add(new RestaurantObjects(name, type));
}
restaurantList.setAdapter(new ListAdapter(this,restaurant));
我尝试在没有循环的情况下完成它并且它完美无缺。 for循环有什么问题。
答案 0 :(得分:1)
R.array.restaurant_names
是由android R.java
生成的一个整数(被识别为更具技术性的资源),它指向XML中的实际R.array.restaurant_names
。它决不会被用作你想要在这里完成的阵列大小。
最好采用旧方法。
String[] restaurant_names = getResources().getStringArray(R.array.restaurant_names);
并在for循环中使用restaurant_names.length
。这应该适合你的目的。
int resturantNameSize = restaurant_names.length;
for(int i=0;i<resturantNameSize;i++) {
name = restaurant_names[i];
type = restaurant_names[i];
restaurant.add(new RestaurantObjects(name, type));
}
答案 1 :(得分:1)
嘿,你把我初始化为零: 因此它永远不会大于list_size。 我建议改变:
for(int i=0;i>=R.array.restaurant_names;i++)
这总是假的,循环不会启动
到
for(int i=0;i <R.array.restaurant_names;i++)
应该有用。我希望它有所帮助:)
答案 2 :(得分:1)
问题在于:
for(int i=0;i>=R.array.restaurant_names;i++) {
R.array.restaurant_names
不是数组中的项目数。