Android:如何更新listview项目?

时间:2017-06-23 21:55:49

标签: android listview

我有ListView,其中包含产品列表。每个列表项都包含TextView,如果产品在购物车中,则会显示购物车中的数量

购物车是一个弹出窗口,可以从购物车更改产品数量。

问题是,当我关闭购物车弹出窗口时,由于未调用getView,因此未更新列表项视图中的数量。

我知道PopupWindow.OnDismissListener,但不知道如何明确更新视图或强行调用getView

有没有办法实现这个目标?谢谢。

2 个答案:

答案 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更灵活。