我想删除刚刚创建的对象。 我正在使用解析来处理我的所有数据
这种方式的工作原理是: 1.列表中有一个帖子。 这个帖子有一个类似按钮" 3.何时"喜欢"按下,将创建一个新对象,该对象指向作为父项的帖子。 "喜欢"按钮也会被隐藏,另一个按钮被称为"喜欢"将是可见的。 4.何时喜欢"按下按钮,需要删除刚刚创建的类似对象。然后"喜欢"按钮将被隐藏,并且"喜欢"按钮出现。
我相信逻辑非常简单。我已经成功构建到第3部分。我目前需要帮助来删除我刚刚创建的类似对象。
这是这两个按钮的代码:
holder.LikeMain.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final ParseObject socialObject = mSocial.get(position);
String objectId = socialObject.getObjectId();
ParseQuery<ParseObject> query = ParseQuery.getQuery("Social");
query.getInBackground(objectId, new GetCallback<ParseObject>() {
public void done(ParseObject reminderObject, ParseException e) {
if (e == null) {
// Now let's update it with some new data. In this case, only cheatMode and score
// will get sent to the Parse Cloud. playerName hasn't changed.
ParseObject myLike = new ParseObject("LikedSocial");
ParseUser currentUser = ParseUser.getCurrentUser();
final String currentUserUsername = currentUser.getUsername();
myLike.put("LikeOwner", currentUserUsername);
// Add a relation between the Like and Comment
myLike.put("PostId", socialObject);
// This will save both myLike and myComment
myLike.saveInBackground();
holder.LikeMain.setVisibility(View.GONE);
holder.LikedMain.setVisibility(View.VISIBLE);
}
}
});
}
});
holder.LikedMain.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ParseObject.createWithoutData("LikedSocial", currentUserUsername).deleteEventually();
holder.LikeMain.setVisibility(View.VISIBLE);
holder.LikedMain.setVisibility(View.GONE);
}
});
答案 0 :(得分:1)
您应该将currentUserName替换为删除代码中Like的对象ID。即
-> 1 -> 2 -> 5
-> 1 -> 3
应该是:
ParseObject.createWithoutData("LikedSocial", currentUserUsername).deleteEventually();
有两种删除对象的方法:
如果手头有物体,请使用
ParseObject.createWithoutData("LikedSocial", idOfLikeObject).deleteEventually();
如果您只拥有对象的ID,即ObjectId,请使用
myLike.deleteInBackground();
编辑:
此外,粘贴代码的方式使您看起来像是在设置OnClickListener两次 - 第一次设置喜欢和第二次删除喜欢。
如果你这样做,那么使用变量来指示你喜欢的状态并使用switch语句来做一个必要的'add like'或'delete like'可能会更有效。单个OnClickListener。