Java 如何从按钮的onClick侦听器中删除Firebase数据库
我正在使用Recycle Adapter类在我的应用程序中显示Firebase数据,其中包含可供购买的书籍列表 但一旦一本书售出,我希望用户能够删除这本书,并最终从Firebase数据库中删除,只需点击一次按钮。 我该怎么做 以下是我的Firebase数据结构: 这是RecycleAdapter类 以下是我的适配器数据类:Java 如何从按钮的onClick侦听器中删除Firebase数据库,java,android,firebase,firebase-realtime-database,onclick,Java,Android,Firebase,Firebase Realtime Database,Onclick,我正在使用Recycle Adapter类在我的应用程序中显示Firebase数据,其中包含可供购买的书籍列表 但一旦一本书售出,我希望用户能够删除这本书,并最终从Firebase数据库中删除,只需点击一次按钮。 我该怎么做 以下是我的Firebase数据结构: 这是RecycleAdapter类 以下是我的适配器数据类: public class SubjectBooksAdapter extends RecyclerView.Adapter<SubjectBooksAdapter.M
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();
}
}
如果你知道那本书的id,你应该能够删除这个id引用的孩子 您必须像以前使用holder.bookCall.setOnClickListener(…)一样实现click侦听器强> 代码:
holder.delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dbreference.child("books").child(bookId).remove();
}
});
我希望它能帮助你 您可以将
null
放在bookid上,将其从数据库中删除
dbreference.child("books").child(bookId).setValue(null);
使用此代码:
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();
}
});
此代码将删除您想要的一本书,只需获取该书的id并将其放在onClickListener中:
dbreference.child("books").child(item).child(bookid).removeValue();
您是否尝试直接在引用上使用
removeValue()
方法?但在实现delete=(Button)itemView.findViewById(R.id.delete)时,如何设置Click listener;但是当我像这样设置onClicklistener时,delete.setOnClickListener(this);它给了我一个错误。但是我如何设置Click listener,因为我已经实现了delete=(Button)itemView.findViewById(R.id.delete);但是当我像这样设置onClicklistener时,delete.setOnClickListener(this);这给了我错误。请帮忙,我又发了一封信answer@VishalSharma代码块的可读性很低,将来很难重用。您能让它更具可读性,从而对其他开发人员产生更好的影响吗?您可以这样做:纠正代码对齐和缩进,并注释不是实际代码的部分(如代码的第二行)。谢谢:)但是在实现delete=(Button)itemView.findViewById(R.id.delete)时,如何设置Click listener;但是当我像这样设置onClicklistener时,delete.setOnClickListener(this);这给了我错误。请帮忙。
dbreference.child("books").child(item).child(bookid).removeValue();
dbref.child("books").child("Computer Science").child(key).removeValue();