I am trying to delete a node requests when the accept option of the alert dialog is clicked,and also when the node contacts created successfully. What I am getting however is that the node contact is being created as expected, but the node requests is not.
This is the code that I am using.. Database references
joinRequestsRef = FirebaseDatabase.getInstance().getReference().child("questions posts").child(postid).child("group").child(groupname).child("requests").child(currentUserID);
usersRef = FirebaseDatabase.getInstance().getReference("users");
contactsRef = FirebaseDatabase.getInstance().getReference().child("questions posts").child(postid).child("group").child(groupname).child("contacts")/*.child(currentUserID)*/;
FirebaseRecyclerOptions<Users> options = new FirebaseRecyclerOptions.Builder<Users>()
.setQuery(joinRequestsRef, Users.class)
.build();
FirebaseRecyclerAdapter<Users, RequestsViewHolder> adapter = new FirebaseRecyclerAdapter<Users, RequestsViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull final RequestsViewHolder holder, int position, @NonNull Users model) {
holder.itemView.findViewById(R.id.user_requests_accept_button).setVisibility(View.VISIBLE);
holder.itemView.findViewById(R.id.user_requests_reject_button).setVisibility(View.VISIBLE);
final String list_user_id = getRef(position).getKey();
DatabaseReference getTypeRef = getRef(position).child("request_type").getRef();
getTypeRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()){
String type = Objects.requireNonNull(dataSnapshot.getValue()).toString();
if (type.equals("received")) {
assert list_user_id != null;
usersRef.child(list_user_id).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
String requestFullName = Objects.requireNonNull(dataSnapshot.child("name").getValue()).toString();
String requestProfileImage = Objects.requireNonNull(dataSnapshot.child("profilepictureurl").getValue()).toString();
holder.fnTextView.setText(requestFullName);
Glide.with(getApplication()).load(requestProfileImage).into(holder.imageView);
}
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CharSequence[] options = new CharSequence[]{"accept", "cancel"};
AlertDialog.Builder builder = new AlertDialog.Builder(JoinRequestsActivity.this);
builder.setTitle("Join Request");
builder.setItems(options, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (which == 0){
contactsRef.child(currentUserID).child(list_user_id).child("contact").setValue("saved").addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
contactsRef.child(list_user_id).child(currentUserID).child("contact").setValue("saved").addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
joinRequestsRef.child(currentUserID).child(list_user_id).removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
joinRequestsRef.child(list_user_id).child(currentUserID).removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
Toast.makeText(JoinRequestsActivity.this, "Participator added", Toast.LENGTH_SHORT).show();
}
}
});
}
}
});
}
}
});
}
}
});
}
if (which == 1){
joinRequestsRef.child(currentUserID).child(list_user_id).removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
joinRequestsRef.child(list_user_id).child(currentUserID).removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
Toast.makeText(JoinRequestsActivity.this, "Participator Deleted", Toast.LENGTH_SHORT).show();
}
}
});
}
}
});
}
}
});
builder.show();
}
});
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
Any help will be appreciated
Write this code after you insert the value with the same root node
deleteRef = FirebaseDatabase.getInstance()
.getReference()
.child("questions posts")
.child(postid)
.child("group")
.child(groupname)
.child("requests")
.child(USER_ID)
deleteRef.removeValue();
You are having the joinRequestRef
till the currentUserID
joinRequestsRef = FirebaseDatabase.getInstance().getReference().child("questions posts").child(postid).child("group").child(groupname).child("requests").child(currentUserID);
And in the code, you are again accessing the currentUserID
:
joinRequestsRef.child(currentUserID).child(list_user_id).removeValue()
Also, inside currentUserID
you will not get list_user_id
child. So this will not work.
joinRequestsRef.child(list_user_id).child(currentUserID)
Try till requests
joinRequestsRef = FirebaseDatabase.getInstance().getReference().child("questions posts").child(postid).child("group").child(groupname).child("requests")
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.