首页 > 解决方案 > 删除项目后无法刷新 RecyclerView

问题描述

我成功地从 recyclerView 中删除了一个项目。Items被成功删除,但recyclerView在删除操作后没有刷新。

这是我的Adapter代码:

holder.removeProduct.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            SharedPreferences myPrefs = context.getSharedPreferences("loginToken", Context.MODE_PRIVATE);
            getToken = myPrefs.getString("token", null);

            new AlertDialog.Builder(context)
                    .setTitle("Remove from Cart")
                    .setMessage("Are you sure you want to remove this Item from cart ?")
                    .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {

                            deleteDialog = ProgressDialog.show(context, "",
                                    "Please Wait...", true);

                            final RequestQueue requestQueue = Volley.newRequestQueue(context);
                            StringRequest request = new StringRequest(Request.Method.POST,
                                    REMOVE_CART_URL + "?token=" + getToken + "&product_id=" + cartModel.getProductid()
                                    , new Response.Listener<String>() {
                                @Override
                                public void onResponse(String response) {
                                    try {
                                        JSONObject jsonObject = new JSONObject(response);
                                        String message = jsonObject.getString("success");
                                        if (message.equals("true")) {

                                            Toast.makeText(context, "Item Deleted Successfully", Toast.LENGTH_SHORT).show();

                                        } else {
                                            Toast.makeText(context, "Some error occurred, Please try again", Toast.LENGTH_SHORT).show();

                                        }

                                    } catch (JSONException e) {
                                        e.printStackTrace();
                                        Log.e("Delete error", e.getLocalizedMessage());
                                    }

                                    deleteDialog.dismiss();

                                    notifyDataSetChanged();
                                }
                            },
                                    new Response.ErrorListener() {
                                        @Override
                                        public void onErrorResponse(VolleyError error) {

                                            Toast.makeText(context, "Some error occurred, Please try again", Toast.LENGTH_SHORT).show();
                                            deleteDialog.dismiss();
                                        }
                                    });
                            requestQueue.add(request);


                        }
                    })

                    // A null listener allows the button to dismiss the dialog and take no further action.
                    .setNegativeButton(android.R.string.no, null)
                    .setIcon(android.R.drawable.ic_delete)
                    .show();

        }
    });

删除后的项目一直存在,直到我关闭应用程序并重新打开。我该如何解决这个问题,所以我不必每次都重新打开应用程序。

标签: androidandroid-recyclerview

解决方案


而不是notifyDataSetChanged()编写此代码:

    if (yourAdapterList.size() > 0) {
        ourAdapterList.remove(position);
        notifyItemRemoved(position);
    }

推荐阅读