Android:使用Parse更新Object

时间:2015-03-24 21:24:37

标签: android parse-platform

我正在尝试创建一个将更改对象的应用程序:Class的状态:出勤率,从1到0,反之亦然,通过2个按钮(开始和停止)。

然后,另一台设备会读取更改以检查出勤情况。 (不是问题,但可能有用)

我尝试搜索教程或示例或视频但无法执行此操作。有人可以帮我这个吗?

    startAttdBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(AttendanceActivity.this, "Attendance taking starts now. Click STOP to end session.", Toast.LENGTH_LONG).show();


            ParseQuery<ParseObject> query = ParseQuery.getQuery("Attendance");

            // Retrieve the object by id
            query.getInBackground("v4nWkoFlmZ", new GetCallback<ParseObject>() {  //retrieve serverID instead of object from parse
                public void done(ParseObject Attendance, ParseException e) {
                    if (e == null) {

                        Attendance.put("Status", 1);
                        Attendance.saveInBackground();
                    }
                }

                @Override
                public void done(ParseObject parseObject, com.parse.ParseException e) {

                }

            });
        }
    });

    stopAttdBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(AttendanceActivity.this, "Attendance taking ended. Please wait...", Toast.LENGTH_LONG).show();
            ParseObject attendance = new ParseObject("Attendance");
            attendance.put("Status", 0);
            attendance.saveInBackground();
            //startActivity(intentAttdResult);
        }
    });

2 个答案:

答案 0 :(得分:0)

启动代码看起来很好,只要ObjectId与现有项匹配,就应该更新Attendance对象。也许可以向saveInBackground()添加一个回调,以确认它是否有效并且没有出现任何错误。

至于你的停止代码,我想你会想要使用objectId修改现有行的相同模式。

只需注意,您不必先获取对象...您可以修改该单个字段并另存为Parse将执行“补丁”,即只需进行更改即可。因此,如果您使用正确的ID创建一个ParseObject并更改状态并调用saveInBackground()它也可以正常工作并为您节省额外的查询命中率。

答案 1 :(得分:0)

您的GetCallback错了。您已实现了两个done()方法。只有空的一个被调用,因为它具有@Override符号。这就是GetCallback应该是什么样的

new GetCallback<ParseObject>() { 
    @Override
    public void done(ParseObject Attendance, ParseException e) {
        if (e == null) {
            Attendance.put("Status", 1);
            Attendance.saveInBackground();
        }
    }
});