我尝试使用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;我在这条线上有错误

请帮我

最佳答案

当您的片段正在实现接口时,请使用该片段对其进行初始化,上下文是保存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);


希望对您有帮助。

09-04 12:48