2017-08-02 7 views
0

json配列をオブジェクト名なしで読み込み、リストに渡そうとしています。私は私のPOJOクラスにchalets.setList(list);値のないjsonArrayオブジェクトを取得してリストに渡します

置くメインループ内

for (int l = 0; l < chaletFacilities.length(); l++){ 
          String facilities = chaletFacilities.getString(l); 
          list = new ArrayList<String>(); 
          list.add(facilities); 

         } 

- 私は、次のコードを使用して、それを取得しようとしています

"facilites": [ 
    "Pool", 
    " Air Conditioning", 
    " Pets Allowed", 
    " Fitness center", 
    " Kitchen", 
    " Internet", 
    " Sona" 
    ] 

:のように私のJSONに見える

問題はこの行にあるlist.add(facilities);最後の要素だけを追加します。すべてをループした後、sonaのみをリストします。

+0

これは –

+0

チェックは以下 –

答えて

1

リストはループ外でインスタンス化する必要があります。

list = new ArrayList<String>(); 
for (int l = 0; l < chaletFacilities.length(); l++){ 
    String facilities = chaletFacilities.getString(l); 
    list.add(facilities); 
} 

改善が直接あなたは常に新しいリストを作成しているlist.add(chaletFacilities.getString(l))

+0

おかげで答えてここにhttps://jsonlint.com/確認してください有効なJSONではありません。 –

+0

Systemは3ミント後に語った、それが働いた –

1

ArrayListの初期化をループ外に移動します。 はこの

list = new ArrayList<String>(); 
for (int l = 0; l < chaletFacilities.length(); l++){ 
     list.add(chaletFacilities.getString(l)) 
} 

が好きですかあなたは何度も何度もyourlistを初期化し、要素を追加してやって。したがって、最後の反復の間、リストは再び初期化されており、単一の要素だけがそれに追加されています。

0
ArrayList list = new ArrayList<String>(); 
    for (int l = 0; l < chaletFacilities.length(); l++){ 
      String facilities = chaletFacilities.getString(l); 
      list.add(facilities); 
    } 
0

のような文字列変数にそれを取り込むのではなく、文字列をリストに追加されます。したがって、リストのサイズは1になり、最後の値はchaletFacilities配列になります。

解決方法:以下のようにリストの初期化をforループの外に保ち、配列の下のすべての値を上部に作成した単一のリストに追加します。

list = new ArrayList<String>(); 

for (int l = 0; l < chaletFacilities.length(); l++) 
{ 
list.add(chaletFacilities.getString(l)); 
} 
関連する問題