我正在尝试在单击添加和删除按钮后更新回收器视图中的文本视图。通知数据集已更改();方法不起作用



我的点击删除和添加按钮位于 MyViewHolder 类下的适配器类中。 我设法删除数据并将其添加到服务器。但它不会从回收器视图更新。下面是我的适配器类。我使用 Volley 库发送请求,删除请求在我的 a**s 中很痛苦,所以我将其更改为发布方法。但这不是我现在面临的问题。我只想更新回收器视图上显示的保留金额。谢谢

public class CartAdapter extends RecyclerView.Adapter<CartAdapter.MyViewHolder>{
private List<Cart> cartList;
private Context mContext;
private Cart cart;
private int inventoryId;
private String username;
private CartAdapter cartAdapter;
private String url = "http://192.168.4.31/api/canteen/cart";
private String delete_url = "http://192.168.4.31/api/canteen/mobile_delete";
String qtyReserved;
public static boolean add= true;
public static int sum = 0;
public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public ImageView thumbnail, plus, minus;
public TextView menuName, quantity_reserved, price ;
public MyViewHolder(View view) {
super(view);
thumbnail = view.findViewById(R.id.itemImage);
menuName = view.findViewById(R.id.itemName);
quantity_reserved = view.findViewById(R.id.qty);
price = view.findViewById(R.id.price);
plus = view.findViewById(R.id.plusImage);
minus = view.findViewById(R.id.minusImage);
view.setOnClickListener(this);
plus.setOnClickListener(this);
minus.setOnClickListener(this);
}
@Override
public void onClick(View view) {
cart = cartList.get(getAdapterPosition());
inventoryId = cart.getCart_inv_id();
username = cart.getScreen_name();
if (view.getId() == plus.getId()) {
putToCart(getAdapterPosition());
// cartAdapter.notifyItemChanged(getAdapterPosition());
}
if (view.getId() == minus.getId()) {
deleteFromCart(getAdapterPosition());
//  notifyItemRemoved(getAdapterPosition());
notifyItemRangeChanged(getAdapterPosition(),cartList.size());
}
}
}
public CartAdapter(Context context, List<Cart> images) {
mContext = context;
this.cartList = images;
this.cartAdapter = this;
}
@Override
public MyViewHolder onCreateViewHolder(final ViewGroup parent, final int viewType) {
final View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.cart_thumbnail, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
cart = cartList.get(position);
String url_image = "http://192.168.4.31";
String name = cart.getImg_url();
String finalurl = "";
finalurl = url_image + name;
Glide.with(mContext).load(finalurl)
.thumbnail(0.3f)
.fitCenter()
.placeholder(R.drawable.lunch)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(holder.thumbnail);
holder.menuName.setText(cartList.get(position).getCart_inv_name());
holder.quantity_reserved.setText(Integer.toString(cartList.get(position).getQuantity_reserved()));
holder.price.setText(Double.toString(cartList.get(position).getTotal())+"0");
//  refreshBlockOverlay(position);
//        if(add){
//            sum = sum + cart.getQuantity_reserved();
//            add= false; }
}
@Override
public int getItemCount() {
return cartList.size();
}
public void putToCart(final int position) {
JSONObject param = new JSONObject();
try {
param.put("screen_name", username);
param.put("inventory_id", inventoryId);
param.put("pending", "null");
} catch (JSONException e) {
e.printStackTrace();
}
JsonObjectRequest request_json = new JsonObjectRequest(Request.Method.PUT, url, param,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
qtyReserved = response.getString("amount_reserved");
Cart image = new Cart();
image.setQuantity_reserved(Integer.valueOf(qtyReserved));
cartList.add(image);
//  notifyItemInserted(position);
notifyItemRangeChanged(position , getItemCount());
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("Error: ", error.getMessage());
Toast.makeText(mContext, "Oops!! Now its not available ", Toast.LENGTH_SHORT).show();
}
});
MySingleton.mySingletonInstance(mContext.getApplicationContext()).addToRequestque(request_json);
}
public void deleteFromCart(final int position2) {
JSONObject param = new JSONObject();
try {
param.put("screen_name", username);
param.put("inventory_id", inventoryId);
} catch (JSONException e) {
e.printStackTrace();
}
JsonObjectRequest request_json = new JsonObjectRequest(Request.Method.POST, delete_url, param,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
//  notifyItemRemoved(position2);
//notifyItemRangeChanged();
// notifyItemRemoved(position2);
// notifyItemChanged(position2);
//notifyItemRangeChanged(position2, 1, null);
//  cartAdapter.notifyDataSetChanged();
notifyDataSetChanged();
Toast.makeText(mContext, "deleted", Toast.LENGTH_SHORT).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("Error: ", error.getLocalizedMessage());
Toast.makeText(mContext, "not ok " + error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
MySingleton.mySingletonInstance(mContext.getApplicationContext()).addToRequestque(request_json);
}
}

您正在从服务器中删除数据,但仍将其保留在列表中的应用程序内存中。在成功的服务器响应时,您应该将其从列表中删除,然后调用 notifyDataSetChanged((;

最新更新