我正在尝试将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

最佳答案

由于使用的是您自己的自定义类,因此无需进行迭代来检索数据。进行迭代时,您正在检索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();
        }
    });

07-27 19:17