Несколько ключей и значений JSONObject не будут сохранены для анализа
у меня есть класс адаптера с флажком, и когда флажок установлен, он нажимает клавишу JSONObject и значение для анализа. Внутри моего приложения он сохраняет только один ключ и значение для анализа как JSONObject, и я хочу, чтобы мое приложение сохраняло несколько ключей и значений в Parse при выборе других флажков.
когда я выбираю другой флажок, он изменяет один ключ и значение, а не добавляет другой набор в JSONObject
фото строки внутри разбора в том числе в JSONObject
вместо этого я хотел бы иметь Jsonobject внутри Parse для сохранения данных, как это, когда другие флажки с разными ключами и значениями выбраны.
{"2c1":true, "2c2":true, "2c3":true, "2c4":true, "2c5":true, "2c6":true}
вместо того, чтобы просто иметь это в одиночку
{"2c1":true}
вот код внутри моего класса адаптера
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();
}
}
});
функциональный код при условии, просто сохраняет на ключ и значение пары.
Изменить: Если вам интересно, что делает тост, когда вы нажимаете флажок здесь.
3 ответов
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();
}
}
});
в вашем OnClickListener вы не обновляете объект, который вы отправляете в базу данных синтаксического анализа. Таким образом, объект, который вы отправляете в базу данных синтаксического анализа, не обновляется. Данные устанавливаются для объекта JSON только один раз за пределами OnClickListener.
Проблема Решена
изменить(ы) составила:
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;
}