Android 如何使用户仅从Firebase实时数据库中删除特定数据
我正在尝试删除Firebase实时数据库中用户之间的邮件。我已成功删除邮件,但我想添加一个条件,即用户不能删除他收到的邮件,只能删除他发送的邮件,目前,用户可以删除他收到的消息以及他从firebase实时数据库发送的消息 我的代码 MessageActivity.javaAndroid 如何使用户仅从Firebase实时数据库中删除特定数据,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我正在尝试删除Firebase实时数据库中用户之间的邮件。我已成功删除邮件,但我想添加一个条件,即用户不能删除他收到的邮件,只能删除他发送的邮件,目前,用户可以删除他收到的消息以及他从firebase实时数据库发送的消息 我的代码 MessageActivity.java 根据您的聊天对象,您拥有发送方和接收方ID。因此,您可以在onBindViewHolder中执行以下操作 if (chat.getSender().equals(fuser.getUid())){ // enabl
根据您的
聊天
对象,您拥有发送方
和接收方
ID。因此,您可以在onBindViewHolder中执行以下操作
if (chat.getSender().equals(fuser.getUid())){
// enable/show delete button
}
else{
// disable/hide delete button
}
public class MessageAdapter extends RecyclerView.Adapter<MessageAdapter.ViewHolder> {
public static final int MSG_TYPE_LEFT = 0;
public static final int MSG_TYPE_RIGHT = 1;
private Context mContext;
private List<Chat> mChat;
String imageurl;
FirebaseUser fuser;
public MessageAdapter(Context mContext, List<Chat> mChat,String imageurl) {
this.mContext = mContext;
this.mChat = mChat;
this.imageurl=imageurl;
}
@NonNull
@Override
public MessageAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
if (viewType == MSG_TYPE_RIGHT) {
View view = LayoutInflater.from(mContext).inflate(R.layout.chat_item_right, parent, false);
return new MessageAdapter.ViewHolder(view);
}
else {
View view = LayoutInflater.from(mContext).inflate(R.layout.chat_item_left, parent, false);
return new MessageAdapter.ViewHolder(view);
}
}
@Override
public void onBindViewHolder(@NonNull MessageAdapter.ViewHolder holder, int position) {
Chat chat=mChat.get(position);
holder.show_message.setText(chat.getMessage());
if (imageurl.equals("default")){
holder.profile_image.setImageResource(R.mipmap.ic_launcher);
} else {
Glide.with(mContext).load(imageurl).into(holder.profile_image);
}
holder.show_message.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
String message_id=chat.getMessageId();
Task<Void> task = Utils.removeUser(message_id);
task.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(mContext,"Message Deleted",Toast.LENGTH_SHORT).show();
}
});
return true;
}
});
}
@Override
public int getItemCount() {
return mChat.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
public TextView show_message;
public ImageView profile_image;
public ViewHolder(@NonNull View itemView) {
super(itemView);
show_message=itemView.findViewById(R.id.show_message);
profile_image=itemView.findViewById(R.id.profile_image);
}
}
@Override
public int getItemViewType(int position) {
fuser= FirebaseAuth.getInstance().getCurrentUser();
if (mChat.get(position).getSender().equals(fuser.getUid())){
return MSG_TYPE_RIGHT;
}
else {
return MSG_TYPE_LEFT;
}
}
}
public class Chat {
private String sender;
private String receiver;
private String message;
String MessageId;
public Chat(String sender, String receiver, String message) {
this.sender = sender;
this.receiver = receiver;
this.message = message;
}
public Chat() {
}
public String getSender() {
return sender;
}
public void setSender(String sender) {
this.sender = sender;
}
public String getReceiver() {
return receiver;
}
public void setReceiver(String receiver) {
this.receiver = receiver;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getMessageId() {
return MessageId;
}
public void setMessageId(String messageId) {
MessageId = messageId;
}
@Override
public boolean equals(@Nullable Object obj) {
if(obj instanceof Chat){
Chat chat=(Chat) obj;
return this.MessageId.equals(chat.getMessageId());}
else
return false;
}
}
if (chat.getSender().equals(fuser.getUid())){
// enable/show delete button
}
else{
// disable/hide delete button
}