Hashmap возвращает значение NULL - PullRequest
0 голосов
/ 21 сентября 2019

У меня есть две модели, первая из которых - модель CartItem с HashMap , ProductOption - вторая модель.

Первая модель:

public class CartItem extends BaseObservable implements Serializable {
  ...
HashMap<String, ProductOption> options;
  ...
@Ignore
public HashMap<String, ProductOption> getOptions() {
    return options;
}

@Ignore
public void setOptions(HashMap<String, ProductOption> options) {
    this.options = options;
}

}

Вторая модель:

public class ProductOption implements Parcelable {
    String optionId;
    String optionKey;
    String optionValue;}

, когда я пытаюсь установить список элементов корзины на адаптере просмотра, все элементы модели cartitem копируются, но параметры копируются как ноль

mViewModel.getCartItems().observe(this,cartItems -> {
        if (FirebaseAuth.getInstance().getCurrentUser() == null) return;
        if (cartItems ==null ) return;


        cartItemList = cartItems;
        cartAdapter.setCartItemList(cartItems);


    });

спасибо за помощь.

1 Ответ

0 голосов
/ 23 сентября 2019

Я нашел причину, по которой параметры становятся нулевыми, в том, что я зацикливаю переменную параметров с помощью итератора и использую it.remove () для циклического удаления параметров в cartItemList

 if (cartItemList.get(i).getOptions() != null){
            HashMap<String, ProductOption> optionHashMap = cartItemList.get(i).getOptions();
            Iterator it = optionHashMap.entrySet().iterator();
            double optionPrice = 0;
            while (it.hasNext()){
                Map.Entry pair = (Map.Entry) it.next();
                optionPrice += Double.valueOf(((ProductOption)pair.getValue()).getOptionValue());
                it.remove();
            }

            price = price + optionPrice;

        }
...