How to Delete Firebase DataBase from onClick listener of Button

Viewed 2820

I'm using Recycle Adapter Class to show the Firebase Data in my app which contains the list of books that are available to purchase.

But once a book is sold, I want the user will be able to delete that book and will eventually delete from Firebase Database also on onClick of Button. How can I do this?

Here is my Firebase Data Structure:

enter image description here Here is RecycleAdapter Class

Here is my Adapter Data Class:

public class SubjectBooksAdapter extends RecyclerView.Adapter<SubjectBooksAdapter.MyViewHolder> {
    ArrayList<Books> bookslist;
    CardView cv;
    FirebaseAuth fauth;
    FirebaseDatabase database;
    DatabaseReference dbreference;
    Books b;

    public SubjectBooksAdapter(ArrayList<Books> bookslist){
        this.bookslist = bookslist;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout,parent,false);
        return new MyViewHolder(v);
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {
        TextView bookName,bookAuthor,bookDesc,bookPrice,bookCall;
        ImageView iv;
        Button delete;

        MyViewHolder(final View itemView) {
            super(itemView);
            cv = (CardView) itemView.findViewById(R.id.my_card_view);

            iv = (ImageView) itemView.findViewById(R.id.imageView);

            database = FirebaseDatabase.getInstance();
            dbreference = database.getReference("books");
            bookName = (TextView) itemView.findViewById(R.id.bookName);
            bookAuthor = (TextView) itemView.findViewById(R.id.bookAuthor);
            bookDesc = (TextView) itemView.findViewById(R.id.bookDesc);
            bookPrice = (TextView) itemView.findViewById(R.id.bookPrice);
            bookCall = (TextView) itemView.findViewById(R.id.bookCall);
            fauth = FirebaseAuth.getInstance();

            delete = (Button) itemView.findViewById(R.id.delete);
        }
    }

    @Override
    public void onBindViewHolder(final MyViewHolder holder, final int position) {
        database = FirebaseDatabase.getInstance();
        dbreference = database.getReference("books");

        b = bookslist.get(position);
        holder.bookName.setText(b.getBname());
        holder.bookAuthor.setText(b.getBauthor());
        holder.bookDesc.setText(b.getBdesc());
        holder.bookPrice.setText("Rs. "+b.getPrice());
        holder.bookCall.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Log.e("Current user is ", fauth.getCurrentUser().getEmail());
                b = bookslist.get(position);
                String[] arr = {b.getSelleremail(),b.getSellername(),b.getBname(),b.getBauthor()};
                //Log.e("Seller is ",b.getSellername());
                Intent in = new Intent(v.getContext(),Chat.class);
                in.putExtra("seller",arr);
                v.getContext().startActivity(in);
            }
        });
        Glide.with(cv.getContext()).load(Uri.parse(b.getPics())).placeholder(R.drawable.bshelf).error(R.drawable.bshelf).into(holder.iv);
    }

    @Override
    public int getItemCount() {
        return bookslist.size();
    }
}

And I'm using this in upload class to push Data in Firebase:

 String bookid = dbreference.child("books").child(item).push().getKey();
                dbreference.child("books").child(item).child(bookid).setValue(b);
5 Answers

If you know the id of that book you should be able to remove the child with that id reference.

You have to implement the click listener as you did before with holder.bookCall.setOnClickListener(...);

Code:

holder.delete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            dbreference.child("books").child(bookId).remove();
        }
    });

I hope it helps you.

You can put null against your bookid to remove it from it from database.

dbreference.child("books").child(bookId).setValue(null);

use this code:

        DatabaseReference driverRef = FirebaseDatabase.getInstance().getReference().child("bname");

                                    driverRef.removeValue();

    if you delete whole database
    use this

      DatabaseReference driverRef = FirebaseDatabase.getInstance().getReference();
    driverRef.removeValue();

//---------------------Use on Button click Listener--------

        setContentView(R.layout.activity_main);
Button button=findViewById(R.id.btn);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        DatabaseReference driverRef = FirebaseDatabase.getInstance().getReference().child("bname");

        driverRef.removeValue();
    }
});

This code will remove a book you want, just get the id of the book and place inside onClickListener:

dbreference.child("books").child(item).child(bookid).removeValue();
dbref.child("books").child("Computer Science").child(key).removeValue();
Related