几个JSONObject键和值不会保存到Parse

时间:2015-12-14 02:39:07

标签: java android json parse-platform

我有一个带复选框的适配器类,当选中该复选框时,它会将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在此处单击复选框时所执行的操作感到好奇。

enter image description here

3 个答案:

答案 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;

    }