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

时间:2019-04-08 05:53:03

标签: android firebase firebase-realtime-database android-recyclerview android-cardview

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

1 个答案:

答案 0 :(得分:1)

由于您正在使用自己的自定义类,因此无需进行迭代来检索数据。进行迭代时,您正在检索类型为 getWindow().setFlags( WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS ) <style name="TranslucentStatusBar" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowTranslucentStatus">true</item> </style>的某些数据,因此会出现该错误。要解决您的问题,您需要删除for循环:

Long