Как получить данные в этой структуре Firebase?Ошибка: невозможно преобразовать объект типа java.util.ArrayList в модель типа QuotationOrder - PullRequest
0 голосов
/ 25 февраля 2019

Я пробовал несколько способов, но я все еще не могу получить данные внутри.Я мог бы создать неправильную модель для моего класса QuotationOrder, так как он составляет 0,1,2 ... заказов.Я новичок в Firebase.Буду признателен за любую помощь.

Вот код и моя модель.Пожалуйста, сообщите мне, создала ли я для него правильную модель.

List<QuotationOrder> quoteList;
quoteList = new ArrayList<>();

final DatabaseReference quotationListRef = FirebaseDatabase.getInstance().getReference()
                .child("QuotationOrder")
                .child(Prevalent.currentOnlineUser.getPhone());
        quotationListRef.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                for(DataSnapshot dSnapshot : dataSnapshot.getChildren()) {                   Log.e("Query Refa",dataSnapshot.getRef().toString());
                Log.e("Query DataSa","\n "+dSnapshot.toString() );
                    for(DataSnapshot ds : dSnapshot.getChildren()) {
                        QuotationOrder quote =  ds.getValue(QuotationOrder.class);
                        quoteList.add(quote);
                     Log.e("Query Refa",dataSnapshot.getRef().toString());
                Log.e("Query Refb",ds.getRef().toString());
                    Log.e("Query DataSb","\n "+ds.toString() );;
public class QuotationOrder {

   String itemID;
    String itemName;
    String itemPrice;
    String itemDescription;
    String itemCategoryType;
    String itemQuantity;
    ArrayList<Cart> order;

    public QuotationOrder() {
    }

    public QuotationOrder(String itemID, String itemName, String itemPrice, String itemDescription, String itemCategoryType, String itemQuantity, ArrayList<Cart> order) {
        this.itemID = itemID;
        this.itemName = itemName;
        this.itemPrice = itemPrice;
        this.itemDescription = itemDescription;
        this.itemCategoryType = itemCategoryType;
        this.itemQuantity = itemQuantity;
        this.order = order;
    }

    public ArrayList<Cart> getOrder() {
        return order;
    }

    public void printOrders() {
        for (Cart carts : this.order) {
            System.out.println(carts);
        }
    }

Обновление После того, как вы предложили, размер квотелиста arraylist по-прежнему равен 0. Также я добавил свой класс модели.Пожалуйста, сообщите мне, создала ли я для него правильную модель. Спасибо. Структура базы данных

ОБНОВЛЕНИЕ2 Кажется, что снимок данных для двух циклов имеет значение из рисунка ниже.Проблема, с которой я сталкиваюсь, состоит в том, чтобы сохранить это. Если я не ошибаюсь, кажется, что данные не могут быть сохранены в arraylist?Как хранить это?Моя модель пошла не так?Ошибка из Log.d ("TAG", String.valueOf (quote.getItemCategoryType ()));Может выдавать исключение нулевого указателя

https://i.stack.imgur.com/sfFBI.png

1 Ответ

0 голосов
/ 27 февраля 2019

Так что с некоторой помощью Алекса и некоторыми советами из другого поста мне удалось выяснить ответ на мой вопрос.Что-то действительно пошло не так в моем классе модели, когда itemPrice, который на самом деле является строкой, объявлен как int.Спасибо за помощь, Алекс.

List<Cart> itemList;
itemList = new ArrayList<>();

final DatabaseReference quotationListRef = FirebaseDatabase.getInstance().getReference()
                .child("QuotationOrder")
                .child(Prevalent.currentOnlineUser.getPhone());
                
                 quotationListRef.child(Prevalent.currentOnlineUser.getPhone())
                                            .addListenerForSingleValueEvent(new ValueEventListener() {
                                        @Override
                                        public void onDataChange(@NonNull DataSnapshot dataSnapshot)
                                        {
                                            for (DataSnapshot quotationSnapshot: dataSnapshot.getChildren())
                                            {
                                                
                                                for (DataSnapshot productSnapshot: quotationSnapshot.getChildren())
                                                {
                                                   Cart cart = productSnapshot.getValue(Cart.class);
                                                    itemList.add(cart);

                                                    
                                                    for(Cart a: itemList)
                                                    {
                                                        Log.e("cart","\n "+a.getItemCategoryType() );
                                                    }
                                                }
                                            }

                                        }

                                        @Override
                                        public void onCancelled(@NonNull DatabaseError databaseError)
                                        {
                                            throw databaseError.toException();
                                        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...