2017-08-18 17 views
1

配列文字列をString.xmlに定義しています。次に、それらをArrayListに追加します。しかし、私は空のリストを持っています。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ループに何か問題がありますか?

答えて

1

ねえ、あなたはゼロとして私を初期化します。 したがって、それはlist_sizeより大きくなることはありません。 私は変更することをお勧めします:

常にfalseです

for(int i=0;i>=R.array.restaurant_names;i++) は、ループが動作するはず

for(int i=0;i <R.array.restaurant_names;i++)

を開始しません。私はそれが役に立てば幸い:)

0

R.array.restaurant_namesはXMLに実際R.array.restaurant_namesで指摘されているAndroidのR.javaによって生成された整数(より技術的であると識別されたリソース)です。それは決してあなたがここで取り除こうとしている配列のサイズとして使用されることを目的としていません。

もっと古い方法で行ってください。

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

問題はここにある:

for(int i=0;i>=R.array.restaurant_names;i++) { 

R.array.restaurant_namesは、配列の項目数ではありません。

関連する問題