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

Android 如何从recyclerview适配器中删除项目,android,arraylist,android-recyclerview,retrofit,Android,Arraylist,Android Recyclerview,Retrofit,如何从回收器视图适配器中删除项目。我从api获取项目并存储在recyclerview适配器中。我正在使用以下代码删除mysql数据库中的项,但无法从recyclerview中删除项 @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.ordTxt.setText("Order No : "+mData.get(position).getOrderNumber

如何从回收器视图适配器中删除项目。我从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();

                }
            });
@覆盖
公共无效onBindViewHolder(MyViewHolder,int位置){
holder.ordTxt.setText(“订单号:+mData.get(position.getOrderNumber());
holder.ordCharges.setText(“Rs:+mData.get(position.getOrderCharges());
orderNo=mData.get(position.getOrderNumber();
holder.detBtn.setOnClickListener(v->{
目录中的意图=新意图(ctx,OrderDetail.class);
在_cat.putExtra(“用户_id”,preferenceHelper.getId())中;
在_cat.putExtra(“ordNo”,mData.get(position.getOrderNumber())中;
ctx.星触觉(in_cat);
});
holder.canBtn.setOnClickListener(v->{
取消确认();
});
}
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
//Log.i(“Responsestring”,response.body().toString());
//Toast.makeText(ctx,“得到响应”,Toast.LENGTH_SHORT).show();
if(response.issusccessful()){
if(response.body()!=null){
progressDialog.disclose();
Log.i(“onSuccess”,response.body());
//deleteItem(mData.get(position));
字符串jsonresponse=response.body();
Toast.makeText(ctx,jsonresponse,Toast.LENGTH_LONG.show();
//此处设置取消订单的成功消息
//JSONObject obj=新的JSONObject(jsonresponse);
//如果(对象选项字符串(“状态”)等于(“真”)){
//parseLoginData(jsonresponse);
}否则{
progressDialog.disclose();
Log.i(“onEmptyResponse”,“返回空响应”);
//Toast.makeText(ctx,“空响应”,Toast.LENGTH_LONG.show();
}
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
progressDialog.disclose();
Toast.makeText(ctx,“请连接您的互联网”,Toast.LENGTH_LONG.show();
}
});

我正在使用改型来调用api并删除mysql中的项目,如何在api的成功消息上获取select item的位置并将其从recyclerview中删除

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

if (response.isSuccessful()) {
    mData.remove(position)
    notifyItemRemoved(position);
}
请看一下kotlin版本:

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

但是我想在api响应之后调用此方法。if(response.issusccessful()){if(response.body()!=null){在thisOk之后,cancelConfirmation是否包含api调用?是的,它包含调用中提到的代码中定义的api调用。enqueue(new Callback(){@Override public void onResponse(Call Call,Response Response){//Log.i(“Responsestring”,Response.body().toString());//Toast.makeText(ctx,“Response get”,Toast.LENGTH_SHORT).show();if(Response.issusccessful()){if(Response.body()!=null){progressDialog.Disease();当我第一次删除项时,它是正常的,但当我删除最后一项时,它会导致错误java.lang.IndexOutofBoundsException如何在api响应之后调用此方法。如果(response.isSuccessful()){if(response.body()!=null){
private fun deleteItem(position: Int) {
    mDataSet.removeAt(position)
    notifyItemRemoved(position)
    notifyItemRangeChanged(position, mDataSet.size)
}