Skip to content Skip to sidebar Skip to footer

Can't Convert Object Of Type Java.lang.string To Type

I have a problem after I add another table to my firebase database. it gives me following error: com.google.firebase.database.DatabaseException: Can't convert object of type java.

Solution 1:

In your first code snippet you read from the root of the database. Since you're trying to read orders, you should read from /Orders instead:

databaseReference= FirebaseDatabase.getInstance().getReference();
firebaseHelper=newFirebaseHelper(databaseReference);

//myAdapter=new MyAdapter(this,firebaseHelper.retrieve());//rvOrder.setAdapter(myAdapter);

databaseReference.child("Orders").addValueEventListener(newValueEventListener() {

Now in your onDataChange you can read the orders by looping over them. Since you already do precisely that in FirebaseHelper.fetchData, you can call that method:

publicvoidonDataChange(DataSnapshot dataSnapshot) {
    firebaseHelper.fetchData(dataSnapshot);
}

Now all that is left is to wire up the data from firebaseHelper.orders to an adapter and the view:

publicvoidonDataChange(DataSnapshot dataSnapshot) {
    firebaseHelper.fetchData(dataSnapshot);
    myAdapter=newMyAdapter(this,firebaseHelper.orders);
    rvOrder.setAdapter(myAdapter);
}

This last step will require that you make FirebaseHelper.orders public, and probably some of the variables must be final.

Solution 2:

I think you need to update this method accordingly:

publicBooleansave(Order order) {
    if (order == null) {
        saved = false;
    } else {
        try {
            databaseReference.child("Orders").push().setValue(order);
            saved = true;

        } catch (DatabaseException e) {
            e.printStackTrace();
            saved = false;
        }
    }
    return saved;
}

Try to change:

databaseReference.child("Orders").push().setValue(order);

To:

databaseReference.child("Orders").child(order.getId).setValue(order);

Also, to retreive all Orders keep using the enhanced loop:

for(DataSnapshot ds : dataSnapshot.getChildren()) {

    System.out.println(ds.getValue(Order.class));
    Order order = ds.getValue(Order.class);
    orders.add(order);
}

Post a Comment for "Can't Convert Object Of Type Java.lang.string To Type"