Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Varias llaves y valores de JSONObject no se guardarán en Parse

Tengo una clase de adaptador con una casilla de verificación y cuando la casilla de verificación está seleccionada empuja una clave JSONObject y el valor de analizar. Dentro de mi aplicación sólo guarda una clave y el valor de Parse como un JSONObject y quiero que mi aplicación para guardar varias claves y valores en Parse al seleccionar otras casillas de verificación.

Cuando selecciono una casilla de verificación diferente, cambia la clave y el valor individuales en lugar de agregar otro conjunto al objeto JSONObject

Foto de la fila dentro de Parse incluyendo el JSONObject

En su lugar, me gustaría tener el JSONObject dentro de Parse para guardar datos como este cuando se seleccionan otras casillas de verificación con diferentes claves y valores.

{"2c1":true, "2c2":true, "2c3":true, "2c4":true, "2c5":true, "2c6":true} 

En lugar de tener esto solo

 {"2c1":true} 

Aquí está el código dentro de mi clase de adaptador

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(); } } }); 

El código funcional proporcionado sólo ahorra en el par clave y valor.

Editar: Si tiene curiosidad sobre lo que hace el Toast cuando hace clic en la casilla de verificación aquí.

Introduzca aquí la descripción de la imagen

3 Solutions collect form web for “Varias llaves y valores de JSONObject no se guardarán en Parse”

 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(); } } }); 

En su OnClickListener, no está actualizando el objeto que está enviando a la base de datos de análisis. Por lo tanto, el objeto que está enviando a su base de datos de análisis no se actualiza. Los datos se establecen para su objeto JSON sólo una vez fuera de su OnClickListener.

Problema resuelto

Ediciones hechas:

  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; } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.