【问题标题】:How to delete the RecyclerView item using Rest API?如何使用 Rest API 删除 RecyclerView 项目?
【发布时间】:2017-06-21 05:47:59
【问题描述】:

我想使用 rest API 删除 RecyclerView 项目。我在 AdapterClass 中使用 Volley。当用户单击删除 TextView 时,RecyclerView 项目应使用 Volley 删除。

这里是代码。

}

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);

            }
        });

}

    }
}

【问题讨论】:

  • 使用 Volley 删除?您正在进行 API 调用。正确的?然后成功就叫你删除方法。
  • 你到底是什么意思?
  • @Kishan Vaghela。是的,使用 Volley 删除。是的,我正在进行 API 调用。如何使用删除方法?你可以发布代码。
  • @jagapathi.当用户点击删除按钮时,RecyclerView 项目应该被删除。

标签: android android-recyclerview android-volley


【解决方案1】:

好的,你必须做两件事才能实现这一目标。

  1. 使用 volley 调用您的 DELETE API。 Delete Request With header and Parametes Volley 这是一个很好的例子。

  2. 然后从 ArrayList 中删除该项目,然后相应地更新适配器。

【讨论】:

    【解决方案2】:

    只需调用您的删除方法作为响应

    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());
    }
    

    【讨论】:

      猜你喜欢
      • 2021-07-18
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 2016-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多