Java 从列表回收视图计算总价

Java 从列表回收视图计算总价,java,android,list,arraylist,android-recyclerview,Java,Android,List,Arraylist,Android Recyclerview,我有一个嵌套列表,其中每个项目的列表都有一个priceReguler和一个priceAfterDiscount 如何计算总价调节器(如果priceAfterDiscount==0)因此结果将是这样的363000+158000=521000 或者如何计算总价(如果PriceAfter折扣!=0)因此结果将是这样的363000+119000=482000 @Override public void onBindViewHolder(@NonNull AdapterHeaderCart.ViewHol

我有一个嵌套列表,其中每个项目的列表都有一个priceReguler和一个priceAfterDiscount

如何计算总价调节器(如果priceAfterDiscount==0)因此结果将是这样的363000+158000=521000

或者如何计算总价(如果PriceAfter折扣!=0)因此结果将是这样的363000+119000=482000

@Override
public void onBindViewHolder(@NonNull AdapterHeaderCart.ViewHolder holder, int position) {
    ProductCountry productCountry = productCountryList.get(position);
    List<Product> productList = productCountry.getProductList();

    Log.e("TAG", "onBindViewHolder: " + productList.toString());
}
这个怎么样

@Override
public void onBindViewHolder(@NonNull AdapterHeaderCart.ViewHolder holder, int position) {
    ProductCountry productCountry = productCountryList.get(position);
    List<Product> productList = productCountry.getProductList();

    Log.e("TAG", "onBindViewHolder: " + productList.toString());

    int sumPriceReguler = 0;
    int finalPosition = 0;
    if (productList.size() > 2) { //for get beforeItem
        for(int i = 0 ; i < productList.size() ; i ++) {
            Product product = productList.get(finalPosition);
            int beforeProductPrice = productList.get(position-1).getPriceReguler();
            if (product.getPriceAfterDiscount == 0) {
                sumPriceReguler = beforeProductPrice + product.getPriceReguler();
            } else {
                sumPriceReguler = beforeProductPrice + product.getPriceAfterDiscount()
            }
            finalPosition++;
        }
    }
    // use sumPriceReguler as you want
}
@覆盖
BindViewHolder上的公共无效(@NonNull AdapterHeaderCart.ViewHolder,int位置){
ProductCountry ProductCountry=productCountryList.get(位置);
List productList=productCountry.getProductList();
Log.e(“TAG”、“onBindViewHolder:+productList.toString());
int-sumPriceReguler=0;
int finalPosition=0;
如果(productList.size()>2){//for get beforeItem
对于(int i=0;i
我在Product=productList.get(position)中得到了一个类似“java.lang.IndexOutOfBoundsException:Index:1,Size:1”的错误;哦,对不起,我把你的清单弄错了,不是产品清单。我会告诉你,你肯定不想在你身上这样做。如果你的列表很长,每次用户滚动时都会重新计算。在适配器中进行大量计算可能会导致UI变慢和延迟。您应该将原始列表映射到适配器可以处理的列表(在将其传递给适配器之前)。此列表仅包含适配器需要的内容,包括计算的价格。
@Override
public void onBindViewHolder(@NonNull AdapterHeaderCart.ViewHolder holder, int position) {
    ProductCountry productCountry = productCountryList.get(position);
    List<Product> productList = productCountry.getProductList();

    Log.e("TAG", "onBindViewHolder: " + productList.toString());

    int sumPriceReguler = 0;
    int finalPosition = 0;
    if (productList.size() > 2) { //for get beforeItem
        for(int i = 0 ; i < productList.size() ; i ++) {
            Product product = productList.get(finalPosition);
            int beforeProductPrice = productList.get(position-1).getPriceReguler();
            if (product.getPriceAfterDiscount == 0) {
                sumPriceReguler = beforeProductPrice + product.getPriceReguler();
            } else {
                sumPriceReguler = beforeProductPrice + product.getPriceAfterDiscount()
            }
            finalPosition++;
        }
    }
    // use sumPriceReguler as you want
}