我有ListView
,其中包含产品列表。每个列表项都包含TextView
,如果产品在购物车中,则会显示购物车中的数量。
购物车是一个弹出窗口,可以从购物车更改产品数量。
问题是,当我关闭购物车弹出窗口时,由于未调用getView
,因此未更新列表项视图中的数量。
我知道PopupWindow.OnDismissListener
,但不知道如何明确更新视图或强行调用getView
。
有没有办法实现这个目标?谢谢。
答案 0 :(得分:2)
所以从你的问题来看,我猜你在你的适配器中传递ArrayList
Product
。所以我们假设Product
类看起来像这样。
class Product {
public String productName;
public int quantity;
}
现在,当您从购物车更新数量时,您需要更新已传递给适配器的ArrayList
,然后在适配器上调用notifyDataSetChanged()
以查看列表中的更改。
所以我正在编写一些用于更改购物车数量的伪代码。
public void changeQuantity(int index, boolean quantityIncreased) {
if(quantityIncreased) products.get(index).quantity = products.get(index).quantity + 1;
else products.get(index).quantity = products.get(index).quantity - 1;
}
现在像这样覆盖你的PopupWindow.OnDismissListener
。致电notifyDataSetChanged
以查看列表中的效果。
@Override
public void onDismissListener() {
adapter.notifyDataSetChanged();
}
答案 1 :(得分:0)
如果您通过BaseAdapter
构造函数传递PRODUCT对象列表,
您可以获取getChildAt(position)
点击购物车的商品的位置。
如果购物车数量发生变化,则根据上述位置,您也可以在ArrayList
中跟踪该项目。
因此,在arraylist中传递特定产品的新值并致电notifyDataSetChanged()
。这将更新您的列表视图
如果可能,我建议更新ListView
以使用RecyclerView
,它比ListView
更灵活。