Bir Nepali
Bir Nepali

Reputation: 439

How to Delete Firebase DataBase from onClick listener of Button

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);

Upvotes: 3

Views: 3109

Answers (5)

Vishal Sharma
Vishal Sharma

Reputation: 1061

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();
    }
});

Upvotes: 1

Raj
Raj

Reputation: 3001

dbref.child("books").child("Computer Science").child(key).removeValue();

Upvotes: 1

AJ Seraspi
AJ Seraspi

Reputation: 113

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();

Upvotes: 1

Juanjo Berenguer
Juanjo Berenguer

Reputation: 789

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.

Upvotes: 2

ahsanali274
ahsanali274

Reputation: 471

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

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

Upvotes: 2

Related Questions