简体   繁体   English

如何使用按钮从 firebase 列表适配器和 firebase 中删除项目

[英]How to delete item from firebase list adapter and firebase using button

I have an activity that reads data from firebase database and displays the data in a firebase list adapter.我有一个从 firebase 数据库读取数据并在 firebase 列表适配器中显示数据的活动。 Each item in the list view has 2 edit text and a button for deleting the item from both the list view and the firebase database.列表视图中的每个项目都有 2 个编辑文本和一个用于从列表视图和 firebase 数据库中删除项目的按钮。 Below is the code for displaying the firebase list adapter下面是显示 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) {.....

The list view works fine.列表视图工作正常。 Data is loaded from firebase, but I want to be able to use this button delete to delete items from both the list view and firebase database.数据从 firebase 加载,但我希望能够使用此按钮删除从列表视图和 firebase 数据库中删除项目。 I did research and only found ways on item click and not using a button, an example is this Android studio remove items from both listview and firebase but I don't know how to apply the principle to the button associated with the item from the database.我做了研究,只找到了点击项目而不是使用按钮的方法,一个例子是这个Android 工作室从列表视图和 firebase 中删除项目,但我不知道如何将原理应用于与数据库中的项目关联的按钮. Kindly render assistance请提供帮助

Below is the code of my adapter class public class TravelDetails {下面是我的适配器的代码 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;
     }

  } 

You can do this way inside your adapter您可以在适配器内执行此操作

// 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
        }
    }
}

I found out how to solve my problem.我发现了如何解决我的问题。 I simply add this in the delete buttons on click method.我只是将其添加到单击方法的删除按钮中。

         public void onClick(View v) {
         DatabaseReference item=adapter.getRef(position) ;
         item.removeValue();

} }); } });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM