获取没有值名称的jsonArray对象并将其传递给列表

时间:2017-08-02 06:27:04

标签: android json for-loop arraylist

我正在尝试读取没有对象名称的json数组,并将其传递给列表。

我的json看起来像:

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

我正在尝试使用以下代码检索它 -

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

                        }

在主循环中,我放入了我的pojo类chalets.setList(list);

问题出在这一行list.add(facilities);中,它只添加最后一个元素。循环遍历所有列表后,仅列出sona

4 个答案:

答案 0 :(得分:1)

ArrayList的初始化移到循环之外。 这样做

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

您所做的是一次又一次地初始化您的列表并添加元素。因此,在最后一次迭代时,列表将再次初始化,并且只添加了一个元素。

答案 1 :(得分: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))

这样的字符串变量中

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您始终在创建新列表。因此,列表大小将为1,其中chaletFacilities数组中的最后一个值。

解决方案:将列表初始化保持在for循环之外,如下所示,并将数组下的所有值添加到您在顶部创建的单个列表中。

list = new ArrayList<String>();

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