Java 删除';图像';聊天活动
希望你们都好。在我的应用程序中,假设一个用户向接收者发送了一张图像,然后发送了一个pdf/docx文件。现在,如果用户删除了该图像,则剩余的pdf/docx将显示为与已删除图像相同的图像。此外,在接收器端,pdf/docx会实时转换为图像形状。但实际上,图像会从(电话和数据库)两端删除,因为如果用户关闭活动并重新打开,则会找到实际的环境。删除text/pdf/docx不会产生这种效果Java 删除';图像';聊天活动,java,android,Java,Android,希望你们都好。在我的应用程序中,假设一个用户向接收者发送了一张图像,然后发送了一个pdf/docx文件。现在,如果用户删除了该图像,则剩余的pdf/docx将显示为与已删除图像相同的图像。此外,在接收器端,pdf/docx会实时转换为图像形状。但实际上,图像会从(电话和数据库)两端删除,因为如果用户关闭活动并重新打开,则会找到实际的环境。删除text/pdf/docx不会产生这种效果 ChatActivity课程: private void privateChat() { Databas
ChatActivity
课程:
private void privateChat() {
DatabaseReference userMessageKeyRef = rootRef.child("Messages")
.child(messageSenderId).child(messageReceiverId).push();
String messagePushId = userMessageKeyRef.getKey();
rootRef.child("Messages").child(messageSenderId).child(messageReceiverId)
.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {
Messages messages = snapshot.getValue(Messages.class);
messagesList.add(messages);
messageAdapter.notifyItemInserted(messagesList.size());
userMessagesList.smoothScrollToPosition(Objects.requireNonNull(userMessagesList.getAdapter())
.getItemCount());
}
@Override
public void onChildChanged(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot snapshot) {
Messages messagesRemoved = snapshot.getValue(Messages.class);
for (int i = 0; i < messagesList.size(); i++) {
assert messagesRemoved != null;
if (messagesList.get(i).getMessageId().equals(messagesRemoved.getMessageId())) {
messagesList.remove(i);
messageAdapter.notifyItemRemoved(i);
messageAdapter.notifyDataSetChanged();
break;
}
}
}
@Override
public void onChildMoved(@NonNull DataSnapshot snapshot, @Nullable String
previousChildName) {
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
其中deleteSentMessage()
方法为:
private void deleteSentMessage(final int position, final MessageViewHolder messageViewHolder) {
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
rootRef.child("Messages").child(userMessagesList.get(position).getFrom())
.child(userMessagesList.get(position).getTo())
.child(userMessagesList.get(position).getMessageId())
.removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(messageViewHolder.itemView.getContext(), "Deleted Successfully",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(messageViewHolder.itemView.getContext(), "Something Wrong",
Toast.LENGTH_SHORT).show();
}
}
});
}
deleteMessageForEveryone()
方法:
private void deleteReceivedMessage(final int position, final MessageViewHolder messageViewHolder) {
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
rootRef.child("Messages").child(userMessagesList.get(position).getTo())
.child(userMessagesList.get(position).getFrom())
.child(userMessagesList.get(position).getMessageId())
.removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(messageViewHolder.itemView.getContext(), "Deleted Successfully",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(messageViewHolder.itemView.getContext(), "Something Wrong",
Toast.LENGTH_SHORT).show();
}
}
});
}
private void deleteMessageForEveryone(final int position, final MessageViewHolder messageViewHolder) {
final DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
rootRef.child("Messages").child(userMessagesList.get(position).getTo())
.child(userMessagesList.get(position).getFrom())
.child(userMessagesList.get(position).getMessageId())
.removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
rootRef.child("Messages").child(userMessagesList.get(position).getFrom())
.child(userMessagesList.get(position).getTo())
.child(userMessagesList.get(position).getMessageId())
.removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(messageViewHolder.itemView.getContext(), "Deleted Successfully",
Toast.LENGTH_SHORT).show();
}
}
});
} else {
Toast.makeText(messageViewHolder.itemView.getContext(), "Something Wrong",
Toast.LENGTH_SHORT).show();
}
}
});
}
private void deleteMessageForEveryone(最终int位置,最终MessageViewHolder MessageViewHolder){
final DatabaseReference rootRef=FirebaseDatabase.getInstance().getReference();
rootRef.child(“Messages”).child(userMessagesList.get(position.getTo())
.child(userMessagesList.get(位置).getFrom())
.child(userMessagesList.get(position).getMessageId())
.removeValue().addOnCompleteListener(新OnCompleteListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
rootRef.child(“Messages”).child(userMessagesList.get(position.getFrom())
.child(userMessagesList.get(position.getTo())
.child(userMessagesList.get(position).getMessageId())
.removeValue().addOnCompleteListener(新OnCompleteListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Toast.makeText(messageViewHolder.itemView.getContext(),“已成功删除”,
吐司。长度(短)。show();
}
}
});
}否则{
Toast.makeText(messageViewHolder.itemView.getContext(),“有问题”,
吐司。长度(短)。show();
}
}
});
}
private void deleteMessageForEveryone(final int position, final MessageViewHolder messageViewHolder) {
final DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
rootRef.child("Messages").child(userMessagesList.get(position).getTo())
.child(userMessagesList.get(position).getFrom())
.child(userMessagesList.get(position).getMessageId())
.removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
rootRef.child("Messages").child(userMessagesList.get(position).getFrom())
.child(userMessagesList.get(position).getTo())
.child(userMessagesList.get(position).getMessageId())
.removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(messageViewHolder.itemView.getContext(), "Deleted Successfully",
Toast.LENGTH_SHORT).show();
}
}
});
} else {
Toast.makeText(messageViewHolder.itemView.getContext(), "Something Wrong",
Toast.LENGTH_SHORT).show();
}
}
});
}