解析Android:从数组中删除对象

时间:2015-11-13 23:12:53

标签: android parse-platform

我正在编写一个应用程序,您可以在其中投票/投票,例如Reddit。 当用户下载了一个帖子,但点击同一帖子上的upvote时,我需要删除之前的downvote。

所以:用户downvotes post,决定upvote>> downvote已删除,在帖子上创建了upvote。

Post有一个带upvote&的数组。 downvote对象。 当我删除实际的downvote对象时,该对象仍然在数组中(这是正常的)。 我尝试从Post类中的数组中删除downvote,如下所示:

//Delete the object from the array
            Logger.d("downvotes before " + post.getDownvotes().size());
            post.getDownvotes().remove(downvoteToDelete);
            Logger.d("downvotes after " + post.getDownvotes().size());

            post.saveInBackground(new SaveCallback() {
                @Override
                public void done(ParseException e) {
                    if (e == null) {
                        Logger.d("deleted the downvote from the post object");
                    } else {
                        Logger.d("error " + e.getCode());
                    }
                }
            });

logcat打印:

- downvotes before 1
- downvotes after 0
- deleted the downvote from the post object

但是数组是一样的...... 如何从数组中正确删除对象?

1 个答案:

答案 0 :(得分:2)

不要忘记将新数组(删除元素后)设置为post对象。

将数组提取到局部变量,然后从数组中删除对象,然后使用局部变量setDownvotes,然后执行post.saveInBackground()。

        localDownVotes = post.getDownvotes();
        localDownVotes.remove(downvoteToDelete);
        post.setDownvotes(localDownVotes);

        post.saveInBackground(new SaveCallback() {
            @Override
            public void done(ParseException e) {
                if (e == null) {
                    Logger.d("deleted the downvote from the post object");
                } else {
                    Logger.d("error " + e.getCode());
                }
            }
        });