将String.xml中的数组字符串添加到ArrayList中

时间:2017-08-18 18:33:28

标签: java android string arraylist adapter

我将数组字符串定义为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循环有什么问题。

3 个答案:

答案 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不是数组中的项目数。