java - Hashmap返回空值问题

标签 java android android-databinding

我有两个模型,第一个是有 HashMap < String, ProductOption> 的 cartItem 模型,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;}

当我尝试将购物车项目列表设置到 recyclerview 适配器时,所有 cartitem 模型项目都会复制,但选项会复制为 null

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


        cartItemList = cartItems;
        cartAdapter.setCartItemList(cartItems);


    });

感谢您的帮助。

最佳答案

我发现使选项为空的原因是我通过迭代器循环选项变量并使用 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;

        }

关于java - Hashmap返回空值问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58042828/

相关文章:

Java-数组索引越界异常

java - 如何根据屏幕上下文监听特定的 Java 按键事件?

android - 切换到横向时,Youtube SDK播放器无法播放

android - 如何在数据绑定(bind)中不将参数传递给具有默认值的参数

android - 数据绑定(bind) Android - 类型参数 T 具有不兼容的上限 : ViewDataBinding and MainActivity

android - 自定义 View 上的数据绑定(bind) "Can' t 引用 .setTag 空引用对象”

java - 如何使用 POI API 删除 Excel 单元格上的换行符

java - 我在哪里可以找到实现 servlet 规范 12.1 和 12.2 的 JBoss 源代码?

android - 日期选择器对话框调用两次

android - 将 LocalBroadcastManager 与静态类一起使用