Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ArrayList复制条目?_Android_Json_Arraylist - Fatal编程技术网

Android ArrayList复制条目?

Android ArrayList复制条目?,android,json,arraylist,Android,Json,Arraylist,在我的应用程序中,我有一个包含JSONArray到JSONObject的JSON。我用JSONArray获取了这些JSONObject,生成了一个对象Batalha,还获取了JSONArraybadges并添加到对象BadgesGanha中。在对象Batalha中,我有一个添加对象BadgeGanha的列表 现在我尝试在对象Batalha中打印列表的大小,问题是打印一个重复的值,例如,如果在logcat print 6中列表的大小为3。我不明白为什么会有这个问题 JSON 豆子 创建列表并显示列

在我的应用程序中,我有一个包含JSONArray到JSONObject的JSON。我用JSONArray获取了这些JSONObject,生成了一个对象Batalha,还获取了JSONArraybadges并添加到对象BadgesGanha中。在对象Batalha中,我有一个添加对象BadgeGanha的列表

现在我尝试在对象Batalha中打印列表的大小,问题是打印一个重复的值,例如,如果在logcat print 6中列表的大小为3。我不明白为什么会有这个问题

JSON

豆子

创建列表并显示列表的大小

我解决了这个问题

我换了块徽章,现在可以工作了

//badges
JSONArray arrayBadges = jsObj.getJSONArray("badges");
List<BadgesGanha> lista = new ArrayList<BadgesGanha>();
for(int i = 0; i < arrayBadges.length(); i++){
    JSONObject jsBadges = arrayBadges.getJSONObject(i);
    BadgesGanha badge = gson.fromJson(jsBadges.toString(), BadgesGanha.class);
    lista.add(badge);
    batalha.setBadges(lista);
}
public class Batalha implements Serializable{
    private static final long serialVersionUID = 1L;

    @SerializedName("ID")
    private Long id;

    private String player1;
    private String player2;
    private String data_inicio;
    private String data_fim;
    private int status;
    private int ID_arena;
    private String vez_player;
    private String player_vencedor;

    private List<BadgesGanha> badges = new ArrayList<BadgesGanha>();


    public Batalha() {    
    }


    /** add badges ganha */
    public void addBadgesGanha(BadgesGanha badge){
        badges.add(badge);
    }



public class BadgesGanha implements Serializable{
    private static final long serialVersionUID = 1L;

    @SerializedName("ID")
    private Integer id;

    private String email;
    private Integer ID_batalha;
    private Integer ID_arena;
    private Integer status;
Gson gson = new Gson();
JSONObject objRetorno = obj.getJSONObject("retorno");

/** abertas */
JSONObject objBatalhas = objRetorno.getJSONObject("batalhas");
JSONArray arrayAberto = objBatalhas.getJSONArray("aberto");
List<Batalha> listBatalhaAberta = new ArrayList<Batalha>();

//batalha aberta
for(int x = 0; x < arrayAberto.length(); x++){
    //pega batalha
    JSONObject jsObj = arrayAberto.getJSONObject(x);
    Batalha batalha = gson.fromJson(jsObj.toString(), Batalha.class);

    //pega badges
    JSONArray arrayBadges = jsObj.getJSONArray("badges");
    for(int i = 0; i < arrayBadges.length(); i++){
        JSONObject jsBadge = arrayBadges.getJSONObject(i);
        BadgesGanha badge = gson.fromJson(jsBadge.toString(), BadgesGanha.class);
        //add badge batalha
        batalha.addBadgesGanha(badge);
    }
    //create list of Batalha
    listBatalhaAberta.add(batalha);
}

//print size list List<BadgesGanha>
for(Batalha x : listBatalhaAberta){
   //should print 3 badges but print 6 badges
   Log.i("BADGES LISTBATALHAABERTA-> ", x.getBadges().size() + "");
}
//badges
JSONArray arrayBadges = jsObj.getJSONArray("badges");
List<BadgesGanha> lista = new ArrayList<BadgesGanha>();
for(int i = 0; i < arrayBadges.length(); i++){
    JSONObject jsBadges = arrayBadges.getJSONObject(i);
    BadgesGanha badge = gson.fromJson(jsBadges.toString(), BadgesGanha.class);
    lista.add(badge);
    batalha.setBadges(lista);
}