2015-12-14 6 views
9

पर सहेजे नहीं जाएंगे मेरे पास एक चेकबॉक्स वाला एडाप्टर क्लास है और जब चेकबॉक्स चुना जाता है तो यह एक JSONObject कुंजी और पार्स के मान को धक्का देता है। मेरे ऐप के अंदर यह केवल एक कुंजी और मान को JSONObject के रूप में सहेजता है और मैं चाहता हूं कि अन्य ऐप अन्य चेकबॉक्स चुनते समय पार्स में कई कुंजी और मानों को सहेज लें।कई JSONObject कुंजी और मान पार्स

जब मैं एक अलग चेकबॉक्स का चयन यह एक कुंजी और मान बल्कि तो JSONObject

Photo of the row inside Parse including the JSONObject

को एक और सेट जोड़ने इसके बजाय मैं इस तरह डेटा को बचाने के लिए पार्स अंदर JSONObject करना चाहते हैं बदलता है जब विभिन्न कुंजी और मानों के साथ अन्य चेकबॉक्स चयनित होते हैं।

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

      } 
     } 
    }); 

प्रदान की कार्यात्मक कोड सिर्फ बचाता है कुंजी और मूल्य जोड़ी पर।

संपादित करें: यदि आप यहां चेकबॉक्स पर क्लिक करते समय टोस्ट के बारे में उत्सुक हैं।

enter image description here

+0

setOnclickListener के अंदर, आप myObject को शामिल किया है, और myObject, संशोधित किया जा प्रतीत नहीं होता है पहली बार जो केवल कहते हैं उम्मीद एक मूल्य –

+0

@TheNeoNoir डेवलपर मैं पार्स से मौजूदा my JSbOject को 'myObject' में कैसे जोड़ सकता हूं? – pxtvr

+0

अगर (((चेकबॉक्स) v) .ischecked()) { myObject.put (dataRecord.getID(), सत्य); ParseUser.getCurrentUser()। डाल दें ("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 ऑब्जेक्ट के लिए केवल आपके ऑनक्लिक लिस्टनर के बाहर सेट हो गया है।

+0

पार्स के अंदर डेटा नवीनतम चेकबॉक्स में बदल गया है लेकिन यह अभी भी एक एकल है अधिक जोड़ने के बजाय, एक कुंजी और एक मूल्य की जोड़ी। – pxtvr

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; 

    } 
संबंधित मुद्दे