我正在编写一个应用程序,您可以在其中投票/投票,例如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
但是数组是一样的...... 如何从数组中正确删除对象?
答案 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());
}
}
});