android - 删除项目后无法刷新 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();
}
});
删除后的项目一直存在,直到我关闭应用程序并重新打开。我该如何解决这个问题,所以我不必每次都重新打开应用程序。
解决方案
而不是notifyDataSetChanged()
编写此代码:
if (yourAdapterList.size() > 0) {
ourAdapterList.remove(position);
notifyItemRemoved(position);
}
推荐阅读
- swift - 在 Swift 中对 AnyObject 的反思
- azure - 设置 Azure App Insights 以收集所有日志
- google-cloud-dataflow - 具体版本:PubSub/Dataflow 确认无界数据
- java - Java:将方法作为参数传递的简单方法
- c# - 从 String 转换为存储在 Type 变量中的类型
- c# - 如何编写单元测试
- javascript - 正则表达式:不提供某些字符串位置的长度
- android-layout - Android Listview不显示添加的项目
- android - 从 sqlitedatabase 的一行中以 name_column 获取所有数据并将其存储在 listview 中
- python - Python中的日志记录模块多次打印相同的错误并多次发送邮件