2015-12-14 4 views
9

У меня есть класс адаптера с флажком, и когда этот флажок установлен, он нажимает на JSONObject ключ и значение в Parse. Внутри моего приложения он сохраняет только один ключ и значение для Parse как JSONObject, и я хочу, чтобы мое приложение сохраняло несколько ключей и значений в Parse при выборе других флажков.Несколько ключей и значений JSONObject не сохраняются в Parse

При выборе другого Checkbox он изменяет один ключ и значение, а затем добавить еще один набор в JSONObject

Photo of the row inside Parse including the 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(); 

      } 
     } 
    }); 

Функциональный код, предоставленный только экономит по паре ключей и значений.

Редактировать: Если вам интересно, что делает Toast, когда вы нажимаете флажок здесь.

enter image description here

+0

Внутри setOnclickListener, вы добавили MyObject и MyObject, кажется, не будет изменен, ожидать в первый раз, который добавляет только одно значение. –

+0

@TheNeoNoirDeveloper Как добавить существующий JSONObject из Parse в 'myObject'? – pxtvr

+0

if (((CheckBox) v) .isChecked()) { myObject.put (dataRecord.getID(), true); ParseUser.getCurrentUser(). Put ("checklistData", myObject);} –

ответ

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

     } 
    } 
}); 
+0

не имеет значения, пока не сработает :( – pxtvr

+0

см. отредактированный ответ. –

+0

все еще не работал :( – pxtvr

1

В вашем OnClickListener, вы не обновляет объект, который вы отправляете в базу данных синтаксического анализа. Таким образом, объект, который вы отправляете в свою базу данных синтаксического анализа, не обновляется. Данные устанавливаются для вашего объекта JSON только один раз за пределами вашего OnClickListener.

+0

Внутри Проведите анализ данных до последнего флажка, но он все еще остается одним пара ключа и значение, а не добавление большего количества. – pxtvr

0

Проблема решаемая

Edit (s) сделал:

 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; 

    } 
Смежные вопросы