所以我的问题如下:
holder.buttonViewID.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if(isChecked){
toggle.setCompoundDrawablesWithIntrinsicBounds(null, rmfcart , null, null);
try {
pack.put("imgid", resID2);
pack.put("desc", descval);
Log.d("PERSODEBUG", pack.toString());
trolly.put(itemID, pack.toString());
Log.d("PERSODEBUG", trolly.toString());
} catch (JSONException e) {
e.printStackTrace();
}
}
[...]
pack 和 trolley 是 JSONObjects, 手推车表现得非常好,我可以向其中添加元素并删除它们,它的行为符合预期,但问题出在包装上。每次更改时,所有已添加到手推车的包实例都会被修改。 例如:
if i add an item to trolly:
{"2":{"imgid":2131165314,"desc":"test1"}}
if i add a 2nd item:
{"2":{"imgid":2131165330,"desc":"test2"},"3":{"imgid":2131165330,"desc":"test2"}}
正如您看到的包的新旧实例在手推车内都被修改, 谁能告诉我如何在手推车内编写固定的包实例字符串来避免这个问题?我确实尝试了一些事情,比如 正如您在上面看到的 toString() 没有任何效果。
非常感谢
最佳答案
每次添加之前都应该创建新的包实例,而不是全局实例
JSONObject pack = new JSONObject(); // new instance
pack.put("imgid", resID2);
pack.put("desc", descval);
Log.d("PERSODEBUG", pack.toString());
trolly.put(itemID, pack.toString());
关于java - 我想写一个固定值的变量JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58198520/