【问题标题】:How to delete item from firebase list adapter and firebase using button如何使用按钮从firebase列表适配器和firebase中删除项目
【发布时间】:2020-02-07 06:36:02
【问题描述】:

我有一个从 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 studio remove items from both listview and firebase,但我不知道如何将原理应用于与数据库中的项目关联的按钮。请提供帮助

下面是我的适配器类的代码 公共类 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;
     }

  } 

【问题讨论】:

    标签: java android firebase-realtime-database


    【解决方案1】:

    您可以在适配器内部这样做

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

    【讨论】:

    • 我现在得到一个无法解析方法 getTxt_Ref() 以及无法解析方法 getDropoffSpot。
    • 以及错误“从 Firebase 列表适配器派生的类匿名类必须声明为抽象类或在 firebase 列表适配器中实现方法 populateview (View, T, int)”,这在代码下,“适配器” =new FirebaseListAdapter (options)...
    • 我还在等你的回复
    • 能否请您显示适配器类的完整代码。您可以更新有问题的代码。
    • 你的意思是 TravelDetails 类正在使用?
    【解决方案2】:

    我找到了解决问题的方法。我只是将其添加到单击方法的删除按钮中。

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

    } }) ;

    【讨论】:

      猜你喜欢
      • 2020-02-16
      • 2018-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-05
      • 2016-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多