Ati*_*ukh 0 java android arraylist
我是JSONArray从服务器上来的.在JSON我收到的格式如下.
[ {
"area_name":"abc",
"coordinates":[
{
"lat":1.123,
"lng":2.123,
},
{
"lat":1.123,
"lng":2.123,
},
.
.
]
},
{
.
.
.
}
]
Run Code Online (Sandbox Code Playgroud)
为了绘制地图上的区域,我正在添加区域areaList和它们的相应坐标coordinatesList
ArrayList<HashMap<String, LatLng>> coordinatesList; // initialised in onCreate
List<ArrayList<HashMap<String, LatLng>>> areaList; // initialised in onCreate
for (int i = 0; i < areaArray.size(); i++) {
coordinatesList.clear();
//coordinatesList = new ArrayList<>();
// parsing of json and other non-related stuff
for (int j =0; j < pointsArray.size(); j++) {
// Getting data from json and saving to hashmap and adding to coordinatesList
coordinatesList.add(pointsHashMap);
}
areaList.add(coordinatesList);
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我尝试从areaList某个函数获取此值.我得到所有位置的相同值.
log.d(TAG, "area " + areaList.get(i).get(0).get("lat_lng)); // its in a loop
Run Code Online (Sandbox Code Playgroud)
对于任何值,i我得到最后一个加值areaList.add(coordinatesList);.之前添加的所有值都将areaList被替换.
但是当我发表评论coordinatesList.clear();并取消评论时,coordinatesList = new ArrayList<>();一切都按预期进行.
有人可以详细说明一下,为什么会这样发生?
小智 5
因为每当你在循环中激活arraylist时,试着在onCreate()中激活arraylist ;
coordinatesList = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
542 次 |
| 最近记录: |