3

I want to delete the RecyclerView item using rest API. I am using Volley in AdapterClass.When user click on delete TextView ,the RecyclerView item should delete using Volley.

Here is code.

enter image description here}

VechileAdapter.java

public class VechileAdapter extends RecyclerView.Adapter<VechileAdapter.MyViewHolder> {

  private Context mContext;
  public LayoutInflater inflater;
  List<VehicleResponse.VehicleDataBean> vehicleArrayList;
  VehicleResponse.VehicleDataBean current;
  public static final String TAG = AppController.class.getSimpleName();

public VechileAdapter(VehicleActivity context, List<VehicleResponse.VehicleDataBean> vehiclelist) {
    inflater = LayoutInflater.from(context);
    this.mContext = context;
    this.vehicleArrayList=vehiclelist;
}


@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout. vechile_card, parent, false);
    return new MyViewHolder(itemView);
}
public void delete(int position) { //removes the row
   // vehicleArrayList.remove(position);
 //   notifyItemRemoved(position);
}

@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
    current= vehicleArrayList.get(position);
    holder.brandnames.setText(current.getVehicle_brand());
    holder.modelnames.setText(current.getVehicle_model());
    holder.vehicleno.setText(current.getVehicle_number());




@Override
public int getItemCount() {
    return vehicleArrayList.size();
}



 public class MyViewHolder extends RecyclerView.ViewHolder {
   public TextView brandnames, modelnames, vehicleno,  Edit, Delete_vehicle, ;
   public ImageView brandimgs;

   public MyViewHolder(View view) {
        super(view);
        brandnames = (TextView) view.findViewById(R.id.brand_names);
        modelnames = (TextView) view.findViewById(R.id.model_names);
        vehicleno = (TextView) view.findViewById(R.id.tv_vehicleno);
        brandimgs = (ImageView) view.findViewById(R.id.brand_imgs);


        Edit = (TextView) view.findViewById(R.id.edit);
        Delete_vehicle = (TextView) view.findViewById(R.id.tv_delete_vehicle);
        Delete_vehicle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                String tag="tag_json_obj";
                String url="...";
                final ProgressDialog pDialog= new ProgressDialog(mContext);
                pDialog.setMessage("Loading");
                pDialog.show();
                JsonObjectRequest jsonObjReq= new JsonObjectRequest(Request.Method.POST,url,null,  new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        Log.d(TAG, response.toString());
                        pDialog.hide();
                    }
                }
                        ,new  Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        VolleyLog.d(TAG, "Error:" + error.getMessage());
                        pDialog.hide();
                    }


                })

                {
                    @Override
                    protected Map<String, String> getParams() {
                        Map<String, String> params = new HashMap<String, String>();

                        params.put("id", current.getId());
                        params.put("user_id", current.getUser_id());
                        return params;
                    }
                };
                AppController.getInstance().addToRequestQueue(jsonObjReq, tag);

            }
        });

}

    }
}
Abhishek Kumar
  • 1,255
  • 13
  • 21
rakesh
  • 69
  • 2
  • 9

2 Answers2

1

Just call your delete method in response

public void delete(int position) { //removes the row
   vehicleArrayList.remove(position);
   notifyItemRemoved(position);
}

@Override
public void onResponse(JSONObject response) {
      Log.d(TAG, response.toString());
      pDialog.hide();
      delete(getAdapterPosition());
}
Kishan Vaghela
  • 7,678
  • 5
  • 42
  • 67
1

Ok theres 2 things you have to do to achieve this.

  1. call your DELETE API using volley. Delete Request With header and Parametes Volley heres good example how to do it.

  2. Then remove the item from your ArrayList then update adapter accordingly.

Damian
  • 934
  • 8
  • 12