当回收在Fragment上时如何从RecycleView中删除项目?

时间:2018-10-18 10:42:16

标签: java android android-studio

我尝试使用OnDeleteData从RecyclerView中删除一项。 但是我在适配器文件上有错误。 (如果我将此方法用于Activity很好,但我将其活动更改为片段)

适配器文件:

public class menuUserAdapter extends RecyclerView.Adapter<menuUserAdapter.ViewHolder> {
public interface dataListener{
    void onDeleteData(Transaksi transaksi , int position);
}
dataListener listener;

public menuUserAdapter(ArrayList<Transaksi> listtransaksi, Context context) {
    this.listtransaksi = listtransaksi;
    //this.listuser = listuser;
    this.context = context;
    listener = (homeFragment) context;
}
public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
   holder.listitem.setOnLongClickListener(new View.OnLongClickListener() {
       public boolean onLongClick(final View v) {
          listener.onDeleteData(listtransaksi.get(position),position);
        }
   };
 }
}

在片段文件上:

  public class homeFragment extends Fragment implements menuUserAdapter.dataListener {


public void onDeleteData(Transaksi transaksi, int position) {
    if(reference != null){
        reference.child("transaksi").child(transaksi.getKey()).removeValue().addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                Toast.makeText(getActivity(), "Data Berhasil Dihapus", Toast.LENGTH_SHORT).show();
            }
        });
      }
  }


}

listener = (homeFragment) context;我在这条线上犯了错

请帮助我

1 个答案:

答案 0 :(得分:1)

当您的片段正在实现接口时,请使用该片段对其进行初始化,上下文是保存homeFragment的Activity上下文。

public menuUserAdapter(ArrayList<Transaksi> listtransaksi, Context context, homeFragment fragment) {
    this.listtransaksi = listtransaksi;
    this.context = context;
    listener = fragment;
}

在您的片段中

menuUserAdapter adapter = menuUserAdapter(listtransaksi, getActivity(), this);

希望它对您有帮助。