我有一个带复选框的适配器类,当选中该复选框时,它会将JSONObject键和值推送到Parse。在我的应用程序中,它只将一个键和值保存为Parse作为JSONObject,我希望我的应用程序在选择其他复选框时将几个键和值保存到Parse中。
当我选择不同的复选框时,它会更改单个键和值,而不是将另一个集添加到JSONObject
Photo of the row inside Parse including the JSONObject
相反,当我选择其他具有不同键和值的复选框时,我希望在Parse中使用JSONObject来保存这样的数据。
{"2c1":true, "2c2":true, "2c3":true, "2c4":true, "2c5":true, "2c6":true}
而不是仅仅拥有这个
{"2c1":true}
以下是Adapter类
中的代码ChecklistAdapter.java
final JSONObject myObject = new JSONObject();
try {
myObject.put(dataRecord.getID(), true);
} catch (JSONException e) {
e.printStackTrace();
}
checkBox.setOnClickListener(new View.OnClickListener() {
String idSelected = dataRecord.getID();
public void onClick(View v) {
if (((CheckBox) v).isChecked()) {
ParseUser.getCurrentUser().put("checklistData", myObject);
ParseUser.getCurrentUser().saveInBackground();
Toast.makeText(getContext(), idSelected,
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getContext(), "CheckBox is unchecked",
Toast.LENGTH_SHORT).show();
}
}
});
提供的功能代码只保存键和值对。
编辑:如果您对Toast在此处单击复选框时所执行的操作感到好奇。
答案 0 :(得分:1)
final JSONObject myObject = new JSONObject();
checkBox.setOnClickListener(new View.OnClickListener() {
String idSelected = dataRecord.getID();
public void onClick(View v) {
if (((CheckBox) v).isChecked()) {
try {
myObject.put(dataRecord.getID(), true);
} catch (JSONException e) {
e.printStackTrace();
}
ParseUser parseUser= ParseUser.getCurrentUser();
parseUser.put("checklistData", myObject);
parseUser.saveInBackground();
Toast.makeText(getContext(), idSelected,
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getContext(), "CheckBox is unchecked",
Toast.LENGTH_SHORT).show();
}
}
});
答案 1 :(得分:1)
在OnClickListener中,您没有更新要发送到解析数据库的对象。因此,您发送到解析数据库的对象不会更新。仅在OnClickListener之外为JSON对象设置数据。
答案 2 :(得分:0)
解决了问题
编辑:
checkBox.setOnClickListener(new View.OnClickListener() {
String idSelected = dataRecord.getID();
public void onClick(View v) {
if (((CheckBox) v).isChecked()) {
JSONObject myObject;
myObject = ParseUser.getCurrentUser().getJSONObject("checklistData");
try {
myObject.put(dataRecord.getID(), true);
} catch (JSONException e) {
e.printStackTrace();
}
ParseUser parseUser= ParseUser.getCurrentUser();
parseUser.put("checklistData", myObject);
parseUser.saveInBackground();
Toast.makeText(getContext(), idSelected,
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getContext(), "CheckBox is unchecked",
Toast.LENGTH_SHORT).show();
}
}
});
return convertView;
}