java - Firebase:无法将java.lang.String类型的对象转换为com.example.g.Model.Cart类型

标签 java android firebase firebase-realtime-database

我说的错误


  com.google.firebase.database.DatabaseException:无法将java.lang.String类型的对象转换为com.example.g.Model.Cart类型
          在com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertBean(com.google.firebase:firebase-database @@ 16.0.5:423)
          com.google.firebase.database.core.utilities.encoding.CustomClassMapper.deserializeToClass(com.google.firebase:firebase-database @@ 16.0.5:214)
          在com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertToCustomClass(com.google.firebase:firebase-database @@ 16.0.5:79)
          com.google.firebase.database.DataSnapshot.getValue(com.google.firebase:firebase-database @@ 16.0.5:212)
          在com.example.gerobokgo.Customer.ViewCart $ 2.onDataChange(ViewCart.java:107)>


此错误发生在我的ViewCart页面上


if (currentUser != null) {
            userID = currentUser.getUid();
            cust_id = firebaseAuth.getUid();
            databaseReference = FirebaseDatabase.getInstance().getReference("Cart").child("Customer List").child(cust_id);
            recyclerView = findViewById(R.id.rv);
            recyclerView.setHasFixedSize(true);
            recyclerView.setLayoutManager(new LinearLayoutManager(this));

            databaseReference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                    CartList = new ArrayList<>();
                    for (DataSnapshot ds : dataSnapshot.getChildren()) {
                        for (DataSnapshot cart : ds.getChildren()) {
                            CartList.add(cart.getValue(Cart.class));

                        }
                    }

                    CartAdapter cartAdapter = new CartAdapter(CartList);
                    recyclerView.setAdapter(cartAdapter);
//                    total.setText( String.valueOf(totalPrice));

                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                    Toast.makeText(getApplicationContext(), databaseError.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });




public class Cart {

    public String cart_id;
    public String pro_id;
    public String cust_id;
    public String brand_id;
    public String pro_name;
    public String pro_price;
    public String pro_image;
    public String pro_category;
    public String quantity;
    public String size;
    public String date;


    public Cart () {
    }


    public Cart(String cart_id, String pro_id, String cust_id, String brand_id, String pro_name, String pro_price, String pro_image, String pro_category, String quantity, String size,String date) {
        this.cart_id = cart_id;
        this.pro_id = pro_id;
        this.cust_id = cust_id;
        this.brand_id = brand_id;
        this.pro_name = pro_name;
        this.pro_price = pro_price;
        this.pro_image = pro_image;
        this.pro_category = pro_category;
        this.quantity = quantity;
        this.size = size;
        this.date=date;
    }


这是我的数据库

enter image description here

最佳答案

onDataChange中有两个嵌套循环:

CartList = new ArrayList<>();
for (DataSnapshot ds : dataSnapshot.getChildren()) {
    for (DataSnapshot cart : ds.getChildren()) {
        CartList.add(cart.getValue(Cart.class));
    }
}


但是,如果我在将侦听器连接到的位置查看JSON,则只会看到日期级别。因此,在这种情况下,您只需要一个循环:

CartList = new ArrayList<>();
for (DataSnapshot cart : dataSnapshot.getChildren()) {
    CartList.add(cart.getValue(Cart.class));
}


仅当用户每天有多个购物车时才需要嵌套循环,但是您当前的数据模型每天仅允许一个购物车。

关于java - Firebase:无法将java.lang.String类型的对象转换为com.example.g.Model.Cart类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58918583/

相关文章:

java - Java大写,小写问题

java - 如何将字符串从一个 Activity 传递到另一个 Activity 并将其用于拨号盘和电子邮件

android - Android版Google登录中的问题

android - Google PlacePicker 在启动后立即关闭,结果代码为 2

node.js - Node 和 Firebase 云消息传递类型错误

android - FirebaseRecyclerAdapter 无法从 Firebase 数据库中检索数据

java - 只允许 Iphone 访问 REST web 服务

java - IDEA +tomcat,tomcat重启时不会更新javaFile上的变化

javascript - Firebase indexOn唯一键中的规则

java - Spring MVC 的 DelegatingFilterProxy 有什么意义?