Все переменные типа объекта в Java являются ссылочными переменными, и важно отличать установку ссылочной переменной (используя =
) от манипулирования объектом, на который ссылается переменная (используя некоторый метод мутирования).
Здесь вы установили map
для сохранения ссылки на ваш HashMap
. Затем в цикле вы снова и снова добавляете одну и ту же ссылку, map
, к arrayList
. Когда вы приходите исследовать arrayList
, в нем есть несколько копий map
, но все они равны. Таким образом, вы будете просто снова и снова видеть то, что случается в HashMap
в то время. Вы только когда-либо создали один HashMap
;и каждый раз, когда вы помещаете свои "id"
, "Name"
и "orderid"
в свой HashMap
, вы просто перезаписываете то, что было ранее.
Чтобы это исправить, вам нужно создать новый HashMap
каждый раз через цикл. Вам нужно объявить map
перед циклом, но присвоить его внутри цикла, новому объекту каждый раз.
HashMap<String, String> map;
try {
for(int i=0;i<json.length();i++){
map = new HashMap<String, String>();
e =json.getJSONObject(i);
map.put("id", String.valueOf(i));
map.put("Name", "Vorname: " + e.getString("meta_value"));
map.put("orderid", "id: " + e.getString("post_id"));
arrayList.add(map);
}