Как получить список из класса POJO - PullRequest
0 голосов
/ 30 сентября 2019

Я не могу получить данные из Firestore на Android. Я использую метод POJO (класс объектов Java) для получения значений. Как это сделать?

1

Класс Pojo:

public class Documents {
    String documentID;
    String documentName;
    String documentDate;
    String inspectorName;
    String marketLocation;

public Documents() {

}

public Documents(String documentID, String documentName, String documentDate, String inspectorName, String marketLocation) {
    this.documentID = documentID;
    this.documentName = documentName;
    this.documentDate = documentDate;
    this.inspectorName = inspectorName;
    this.marketLocation = marketLocation;
}

public String getDocumentID() {
    return documentID;
}

public String getDocumentName() {
    return documentName;
}

public String getDocumentDate() {
    return documentDate;
}

public String getInspectorName() {
    return inspectorName;
}

public String getMarketLocation() {
    return marketLocation;
}

}

MainActivity.java:

List<Documents> documentsList = new ArrayList<>();

Documents documents = documentsList.get(); // Error to retrieve all data

primaryLayout(documents.getDocumentID(), documents.getDocumentName(), documents.getDocumentDate(), documents.getInspectorName(), documents.getMarketLocation());

Ответы [ 3 ]

2 голосов
/ 30 сентября 2019

Это условная ошибка, равно как и грубая ошибка. Вы должны назвать свои классы POJO в единственном числе. То есть вместо того, чтобы называть его Documents, вы должны были назвать его Document, чтобы List<Document> было documentsList, а Document document = documentsList.get(<index>) имеет смысл.

Линия Documents documents = documentsList.get(); неверна, поскольку вы пытаетесьполучить один Document из documentsList, вызвав метод get(), но вы не передаете значение индекса в метод get(). Также переменная documentsList инициализируется прямо над этой строкой, что означает, что список, скорее всего, пуст.

Я предлагаю вам сделать следующее:

  1. First off Refactor> Переименовать вашКласс POJO от Documents до Document.
  2. Во-вторых, после инициализации списка документов, добавьте экземпляры Document в список, вызывая: documentsList.add(new Document("documentID","documentName","documentDate","inspectorName","marketLocation")); столько раз, сколько у вас есть Document s из вашей базы, используя итератор, такой как foreach()
0 голосов
/ 30 сентября 2019

Больше кода из класса MainActivity

MainActivity.java:

    List<Documents> documentsList = new ArrayList<>();

    Documents documents = documentsList.get(); // Error to retrieve all data

    primaryLayout(documents.getDocumentID(), documents.getDocumentName(), documents.getDocumentDate(), documents.getInspectorName(), documents.getMarketLocation());

public void primaryLayout(String documentID, String documentName, String documentDate, String inspectorName, String marketLocation) {
    progressBar = findViewById(R.id.progressLoader);
    progressBar.setVisibility(View.VISIBLE);

    Documents documents = new Documents(documentID, documentName, documentDate, inspectorName, marketLocation);

    collectionReference.document(documents.getDocumentID()).collection("Products").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if(task.isSuccessful()) {

                itemsList.clear();

                for(DocumentSnapshot documentSnapshot : task.getResult()) {
                    Items items = documentSnapshot.toObject(Items.class);
                    itemsList.add(items);

                    productListAdapter.notifyDataSetChanged();

                    progressBar.setVisibility(View.GONE);
                }
            }
        }
    });
}
0 голосов
/ 30 сентября 2019

вы только инициализировали ArrayList .... Не это объекты .... Вы должны инициализировать каждый его объект, а затем вы можете получить к нему доступ, вызвав documentList.get (position) .. Однако это не решит вашу проблему. проблема получения данных из Firebase FireStore .. Вы можете перейти по этой ссылке добавление FireStore на Android

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...