如何从 recyclerview 适配器中删除项目

How to remove items from recyclerview adapter

如何从回收站视图适配器中删除项目。我从 api 获取项目并存储在 recyclerview 适配器中。我正在使用以下代码删除 mysql 数据库中的项目,但无法从 recyclerview

中删除项目
@Override
    public void onBindViewHolder(MyViewHolder holder, int position) {

        holder.ordTxt.setText("Order No : "+mData.get(position).getOrderNumber());
        holder.ordCharges.setText("Rs: "+mData.get(position).getOrderCharges());

        orderNo = mData.get(position).getOrderNumber();


        holder.detBtn.setOnClickListener(v -> {
            Intent in_cat = new Intent(ctx,OrderDetail.class);
            in_cat.putExtra("user_id", preferenceHelper.getId());
            in_cat.putExtra("ordNo", mData.get(position).getOrderNumber());
            ctx.startActivity(in_cat);
        });

        holder.canBtn.setOnClickListener(v -> {
            cancelConfirmation();

        });


    }

call.enqueue(new Callback<String>() {
                @Override
                public void onResponse(Call<String> call, Response<String> response) {
                    //Log.i("Responsestring", response.body().toString());
                    //Toast.makeText(ctx, "Response Got", Toast.LENGTH_SHORT).show();
                    if (response.isSuccessful()) {
                        if (response.body() != null) {

                            progressDialog.dismiss();

                            Log.i("onSuccess", response.body());

                            //deleteItem(mData.get(position));

                            String jsonresponse = response.body();
                            Toast.makeText(ctx,jsonresponse,Toast.LENGTH_LONG).show();

                            //success message for cancelling order to be set here

                            //JSONObject obj = new JSONObject(jsonresponse);
                            //if(obj.optString("status").equals("true")){


                            //parseLoginData(jsonresponse);

                        } else {

                            progressDialog.dismiss();

                            Log.i("onEmptyResponse", "Returned empty response");
                            //Toast.makeText(ctx,"Empty Response",Toast.LENGTH_LONG).show();
                        }
                    }
                }

                @Override
                public void onFailure(Call<String> call, Throwable t) {
                    progressDialog.dismiss();
                    Toast.makeText(ctx,"Please connect your internet",Toast.LENGTH_LONG).show();

                }
            });

我正在使用改装来调用 api 并删除 mysql 中的项目,如何获取 select 项目的位置并在来自 api

试试这个会有效notifyItemRemoved(position)

holder.canBtn.setOnClickListener(v -> {
    cancelConfirmation(position);
});

然后作为当前位置的参数传递如下cancelConfirmation(int position),最后当响应成功时删除项目如下

if (response.isSuccessful()) {
    mData.remove(position)
    notifyItemRemoved(position);
}

看看official documentation

kotlin 版本:

private fun deleteItem(position: Int) {
    mDataSet.removeAt(position)
    notifyItemRemoved(position)
    notifyItemRangeChanged(position, mDataSet.size)
}