Я создаю приложение для чата. Я хочу, чтобы пользователи могли удалять чаты и сообщения из базы данных Firebase. Ниже приведен код адаптера сообщений, который я пытался использовать для удаления сообщений, и он работает нормально, когда я долго нажимаю насообщение, но когда я снова захожу в приложение, сообщения возвращаются.Я использую базу данных firebase
package com.paddi.paddi.paddi;
import android.graphics.Color;
import android.support.v7.widget.RecyclerView;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.squareup.picasso.Picasso;
import java.util.List;
import de.hdodenhof.circleimageview.CircleImageView;
/**
* Created by paddi on 15/11/2017.
*/
public class MessageAdapter extends RecyclerView.Adapter<MessageAdapter.MessageViewHolder>
{
private List<Messages> userMessagesList;
private FirebaseAuth mAuth;
private DatabaseReference UsersDatabaseReference;
public MessageAdapter(List<Messages> userMessagesList)
{
this.userMessagesList = userMessagesList;
}
// I tried using this to delete the chats it works but every time i log into the app again the messages re-appear
public void delete(int position){
userMessagesList.remove(position);
notifyItemRemoved(position);
}
@Override
public MessageViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
View V = LayoutInflater.from(parent.getContext())
.inflate(R.layout.messages_layout_of_users, parent, false);
mAuth = FirebaseAuth.getInstance();
return new MessageViewHolder(V);
}
@Override
public void onBindViewHolder(final MessageViewHolder holder, int position)
{
String message_sender_id = mAuth.getCurrentUser().getUid();
Messages messages = userMessagesList.get(position);
String fromUserId = messages.getFrom();
String fromMessageType = messages.getType();
UsersDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Users").child(fromUserId);
UsersDatabaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
String userName = dataSnapshot.child("user_name").getValue().toString();
String userImage = dataSnapshot.child("user_thumb_image").getValue().toString();
Picasso.with(holder.ReceiverProfileImage.getContext()).load(userImage)
.fit().centerInside().placeholder(R.drawable.default_profile).into(holder.ReceiverProfileImage);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
if (fromMessageType.equals("text"))
{
holder.ReceiverMessageText.setVisibility(View.INVISIBLE);
holder.messagePicture.setVisibility(View.INVISIBLE);
holder.ReceiverProfileImage.setVisibility(View.INVISIBLE);
holder.SenderMessageText.setVisibility(View.INVISIBLE);
// You comment this last line out in case of any errors
if (fromUserId.equals(message_sender_id))
{
// You comment this first line out in case of any errors
holder.SenderMessageText.setVisibility(View.VISIBLE);
holder.SenderMessageText.setBackgroundResource(R.drawable.sender_message_text_background);
holder.SenderMessageText.setTextColor(Color.WHITE);
holder.SenderMessageText.setGravity(Gravity.START);
holder.SenderMessageText.setText(messages.getMessage());
}
else
{
holder.SenderMessageText.setVisibility(View.INVISIBLE);
holder.ReceiverMessageText.setVisibility(View.VISIBLE);
holder.ReceiverProfileImage.setVisibility(View.VISIBLE);
holder.messagePicture.setVisibility(View.VISIBLE);
holder.ReceiverMessageText.setBackgroundResource(R.drawable.receiver_message_text_background);
holder.ReceiverMessageText.setTextColor(Color.WHITE);
holder.ReceiverMessageText.setGravity(Gravity.START);
holder.ReceiverMessageText.setText(messages.getMessage());
}
// holder.messageText.setText(messages.getMessage());
}
else
{
// holder.messageText.setVisibility(View.INVISIBLE);
// holder.messageText.setPadding(0,0,0,0);
// holder.messagePicture.setForegroundGravity(22);
Picasso.with(holder.ReceiverProfileImage.getContext()).load(messages.getMessage())
.placeholder(R.drawable.default_profile).into(holder.messagePicture);
}
}
@Override
public int getItemCount()
{
return userMessagesList.size();
}
public class MessageViewHolder extends RecyclerView.ViewHolder implements View.OnLongClickListener
{
public TextView SenderMessageText, ReceiverMessageText;
public CircleImageView ReceiverProfileImage;
public ImageView messagePicture;
public MessageViewHolder(View view) {
super(view);
SenderMessageText = (TextView) itemView.findViewById(R.id.sender_message_text);
ReceiverMessageText = (TextView) itemView.findViewById(R.id.receiver_message_text);
messagePicture = (ImageView) view.findViewById(R.id.message_image_view);
ReceiverProfileImage = (CircleImageView) view.findViewById(R.id.messages_profile_image);
SenderMessageText.setOnLongClickListener(this);
ReceiverMessageText.setOnLongClickListener(this);
messagePicture.setOnLongClickListener(this);
}
@Override
public boolean onLongClick(View v) {
delete(getAdapterPosition());
return true;
}
}
}
Это скриншот моей базы данных для дерева сообщений: 