DatabaseException: невозможно преобразовать объект типа java.lang.Long в тип (Model.class)

Я пытаюсь раздуть набор карточек на RecyclerView, взяв данные из FireBase. Моя проблема:

DatabaseException: Can't convert object of type java.lang.Long to type 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 

![][1]


  [1]: https://i.stack.imgur.com/Nmt0l.png
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
575
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();
        }
    });

вам нужно использовать адаптер и вьюхолдер, cardview это просто view, используйте FirebaseUI и в xml добавьте cardview, затем в onCreateViewHolder раздуйте макет cardView, и вы получите карточки с данными...

Peter Haddad 08.04.2019 09:17

Теперь он отправляет эту ошибку: E/RecyclerView: адаптер не подключен; пропуск макета... вы знаете, как это исправить?

Playa 10.04.2019 21:01

Пожалуйста, задайте его в другом вопросе

Peter Haddad 10.04.2019 21:48

Другие вопросы по теме