猿问

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

我尝试使用 OnDeleteData 从我的 RecyclerView 中删除一项。但我在适配器文件上有错误。(如果我将这种方法用于 Activity 很好,但我将我的 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; 我在这条线上有错误


月关宝盒
浏览 120回答 1
1回答

慕田峪4524236

由于您的片段正在实现接口,因此使用片段对其进行初始化,上下文是保存 homeFragment 的 Activity 上下文。public menuUserAdapter(ArrayList<Transaksi> listtransaksi, Context context, homeFragment fragment) {&nbsp; &nbsp; this.listtransaksi = listtransaksi;&nbsp; &nbsp; this.context = context;&nbsp; &nbsp; listener = fragment;}在你的片段中menuUserAdapter adapter = menuUserAdapter(listtransaksi, getActivity(), this);希望对你有帮助。
随时随地看视频慕课网APP

相关分类

Java
我要回答