【发布时间】:2021-05-23 15:29:15
【问题描述】:
我在关于 Arraylist 的代码中有一个问题。我有两种方法,一种方法与服务器一起使用以获取数据,在此方法中我将数据添加到 ArrayList。第二种方法是返回 Arraylist 的 getter。但是当我在第一个方法中使用 Log.d() 显示数据时,ArrayList 有数据。但是当我尝试调用第二种方法时,ArrayList 是空的。帮我!!!先感谢您!!! 下面显示了将从服务器获取数据的代码优先方法 试试 {
JSONArray jsonArray= new JSONArray(response);
for(int i=0; i<jsonArray.length(); ++i)
{
ordersLists.setId(jsonArray.getJSONObject(i).getString("id"));
ordersLists.setMain_cat(jsonArray.getJSONObject(i).getString("main_cat"));
ordersLists.setSub_cat(jsonArray.getJSONObject(i).getString("sub_cat"));
ordersLists.setDate(jsonArray.getJSONObject(i).getString("date"));
ordersLists.setPrice(jsonArray.getJSONObject(i).getInt("price"));
ordersLists.setComment(jsonArray.getJSONObject(i).getString("comment"));
ordersLists.setCity(jsonArray.getJSONObject(i).getInt("city"));
arrayList.add(ordersLists);
}
第二种方法是getter。
public ArrayList<OrdersLists> getArrayList()
{
return arrayList;
}
【问题讨论】:
-
这个不清楚
-
在每次迭代中,您将添加到
arrayList对ordersLists的同一实例 的引用。这意味着当您修改该对象时,它将通过 arraylist 的每个引用(“元素”)可见。您可能希望在每次迭代中为ordersLists创建new实例,对其进行设置,然后将其添加到arrayList。