DatabaseException:无法将java.lang.Long类型的对象转换为type(Model.class)

问题描述 投票:0回答:1

我正在尝试在RecyclerView上对cardView设置进行充气,从FireBase获取数据。我的问题是:

DatabaseException:无法将java.lang.Long类型的对象转换为app.technologias8.smartbarprototipo.modelos.Pedido类型

所以他们告诉我问题出在了

Pedido p = dataSnapshot1.getValue(Pedido.class);

我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.articulos_seleccionados);

    refMesaVirtual.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            listaPedido = new ArrayList<Pedido>();
            for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
                Pedido p = dataSnapshot1.getValue(Pedido.class); //!!
                listaPedido.add(p);
            }
            adaptadorListarPedidos = new AdaptadorListarPedidos(ArticulosSeleccionadosActivity.this, listaPedido/*, nombre, precio*/);
            recyclerViewPedidos.setAdapter(adaptadorListarPedidos);
            recyclerViewPedidos.setHasFixedSize(true);
        }
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
            Toast.makeText(ArticulosSeleccionadosActivity.this, "Upss.. Algo anda mal!", Toast.LENGTH_SHORT).show();
        }
    });
}
}

我的模特

public class Pedido {
private String Nombre;
private String Precio;

public Pedido() {
}

public Pedido(String nombre, String precio) {
    Nombre = nombre;
    Precio = precio;
}

public String getNombre() {
    return Nombre;
}

public void setNombre(String nombre) {
    this.Nombre = nombre;
}

public String getPrecio() {
    return Precio;
}

public void setPrecio(String precio) {
    this.Precio = precio;
}
}
And my DataBase 

![enter image description here][1]


  [1]: https://i.stack.imgur.com/Nmt0l.png
android firebase firebase-realtime-database android-recyclerview android-cardview
1个回答
1
投票

由于您使用自己的自定义类,因此无需迭代来检索数据。在迭代时,您正在检索Long类型的一些数据,因此您会收到该错误。要解决您的问题,您需要删除for循环:

refMesaVirtual.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
    listaPedido = new ArrayList<Pedido>();
    Pedido p = dataSnapshot.getValue(Pedido.class); //!!
    listaPedido.add(p);
    adaptadorListarPedidos = new AdaptadorListarPedidos(ArticulosSeleccionadosActivity.this, listaPedido/*, nombre, precio*/);
    recyclerViewPedidos.setAdapter(adaptadorListarPedidos);
    recyclerViewPedidos.setHasFixedSize(true);
        }
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
      Toast.makeText(ArticulosSeleccionadosActivity.this, "Upss.. Algo anda mal!", Toast.LENGTH_SHORT).show();
        }
    });
© www.soinside.com 2019 - 2024. All rights reserved.