[英]How to delete item from firebase list adapter and firebase using button
我有一个从 firebase 数据库读取数据并在 firebase 列表适配器中显示数据的活动。 列表视图中的每个项目都有 2 个编辑文本和一个用于从列表视图和 firebase 数据库中删除项目的按钮。 下面是显示 firebase 列表适配器的代码
adapter =new FirebaseListAdapter <TravelDetails>
( options){
protected void populateView(View v, TravelDetails model, int position) {
Button delete=(Button)v.findViewById(R.id.button_accept);
final TextView z=(TextView)v.findViewById(R.id.dropoff);
final TextView text=(TextView)v.findViewById(R.id.txref);
text.setText(model.getTxt_Ref());
z.setText(model.getDropoffspot());
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {.....
列表视图工作正常。 数据从 firebase 加载,但我希望能够使用此按钮删除从列表视图和 firebase 数据库中删除项目。 我做了研究,只找到了点击项目而不是使用按钮的方法,一个例子是这个Android 工作室从列表视图和 firebase 中删除项目,但我不知道如何将原理应用于与数据库中的项目关联的按钮. 请提供帮助
下面是我的适配器的代码 class public class TravelDetails {
private String dropoffspot;
private String txt_Ref;
public TravelDetails(){
}
public String getDropoffspot(){
return dropoffspot;
}
public void setDropoffspot(String dropoffspot){
this.dropoffspot=dropoffspot;
}
public String getTxt_Ref() {
return txt_Ref;
}
public void setTxt_Ref(String txt_Ref) {
this.txt_Ref = txt_Ref;
}
}
您可以在适配器内执行此操作
// make this function inside your adapter
protected void populateView(View v, ArrayList<TravelDetails> models, final int position) {
Button delete=(Button)v.findViewById(R.id.button_accept);
final TextView z=(TextView)v.findViewById(R.id.dropoff);
final TextView text=(TextView)v.findViewById(R.id.txref);
text.setText(model.getTxt_Ref());
z.setText(model.getDropoffspot());
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// code to delete from firebase
models.remove(position); // delete from adapter array list
notifyDataSetChanged(); // refresh adapter
}
}
}
我发现了如何解决我的问题。 我只是将其添加到单击方法的删除按钮中。
public void onClick(View v) {
DatabaseReference item=adapter.getRef(position) ;
item.removeValue();
} });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.