#java #android #list #arraylist #android-recyclerview
#java #Android #Список #arraylist #android-recyclerview
Вопрос:
У меня есть вложенный список, в котором каждый список элементов имеет priceReguler и priceAfterDiscount .
Как рассчитать регулятор общей цены (если priceAfterDiscount == 0)? таким образом, результат будет таким: 363000 158000 = 521000.
или как рассчитать общую цену (если priceAfterDiscount ! = 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());
}
E/TAG: onBindViewHolder: [{totalAllProduct=0, finalPrice=0, totalPrice=0, image='https://google.com/171212847/file.jpg', images=null, kindId=0, kind=null, description='null', weight=0, source=Source{image = 'null',name = 'Shopciety',link = 'null',id = '0',slug = 'shopciety'}, usdPriceRegular=0.0, sourceLink='null', colors=null, priceRegular=363000, sizes=null, usdPriceAfterDiscount=0, name='4D CITYSCAPE Puzzle - Game of Thrones Winterfell 3D Puzzle', attributes=null, id=141922, sourceId=0, priceAfterDiscount=0, slug='null', isFeatured=false, country='USA'}]
E/TAG: onBindViewHolder: [{totalAllProduct=0, finalPrice=0, totalPrice=0, image='https://google.com/system/media_libraries/268171710/file.jpg', images=null, kindId=0, kind=null, description='null', weight=0, source=Source{image = 'null',name = 'Shopciety',link = 'null',id = '0',slug = 'shopciety'}, usdPriceRegular=0.0, sourceLink='null', colors=null, priceRegular=158000, sizes=null, usdPriceAfterDiscount=0, name='BIOGLAN Supplement - Gummies Probiotic 50 Chocolate Balls', attributes=null, id=142095, sourceId=0, priceAfterDiscount=119000, slug='null', isFeatured=false, country='Australia'}]
Комментарии:
1. Вы определенно не хотите делать это в своем адаптере. Если ваш список очень длинный, он будет пересчитываться каждый раз, когда пользователь прокручивает. Выполнение большого количества вычислений в адаптере может привести к замедлению пользовательского интерфейса и задержкам. Вы должны взять исходный список и сопоставить его со списком, который может обработать адаптер (перед передачей его адаптеру). Этот список будет содержать только то, что нужно адаптеру, включая рассчитанную цену.
Ответ №1:
как насчет этого?
@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
}
Комментарии:
1. Я получаю сообщение об ошибке, подобное этому «java.lang. Исключение IndexOutOfBoundsException: Индекс: 1, Размер: 1″в продукте product = ProductList.get(позиция);
2. о, извините, я перепутал, что ваш список не является списком продуктов. Я отредактирую