我尝试使用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);
希望对您有帮助。