Чтение данных из базы данных Firebase в пользовательский список - PullRequest
0 голосов
/ 06 февраля 2020

enter image description here Я пытаюсь прочитать данные, которые я вставил в базу данных Firebase, я хочу отобразить данные в пользовательском listView. Я использую этот метод, но мне кажется, что я что-то упустил. Я не могу вставить данные в мой список. ОБНОВЛЕНО Я вставил значения, и теперь он дает мне

попытку вызвать виртуальный метод для ссылки на пустой объект в моих методах get

private void showData(DataSnapshot dataSnapshot) {
    for (DataSnapshot ds : dataSnapshot.getChildren()) {
        PatientInformation patientInfo = new PatientInformation();
        patientInfo.setName(ds.child(userID).getValue(PatientInformation.class).getName());
        patientInfo.setAge(ds.child(userID).getValue(PatientInformation.class).getAge());
        patientInfo.setDate(ds.child(userID).getValue(PatientInformation.class).getDate());
        ArrayList<PatientInformation> arrayList = new ArrayList<>();
        arrayList.add(patientInfo);
        PatientInformationAdapter pAdapter = new PatientInformationAdapter(this, arrayList);
        listView.setAdapter(pAdapter);
    }

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Вы создаете новый список массивов и адаптер для каждого дочернего узла результатов. Возможно, вы захотите создать только один список массивов и адаптер, например:

private void showData(DataSnapshot dataSnapshot) {
    ArrayList<PatientInformation> arrayList = new ArrayList<>();
    for (DataSnapshot ds : dataSnapshot.getChildren()) {
        PatientInformation patientInfo = ds.child(userID).getValue(PatientInformation.class)
        arrayList.add(patientInfo);
    }
    PatientInformationAdapter pAdapter = new PatientInformationAdapter(this, arrayList);
    listView.setAdapter(pAdapter);
}
1 голос
/ 06 февраля 2020

Ваш массив arrayList имеет тип PatientInformation, поэтому я думаю, что вы можете просто добавить информации о пациенте, который также имеет тип PatientInformation.

private void showData(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
    PatientInformation patientInfo = new PatientInformation();
    patientInfo.setName(ds.child(userID).getValue(PatientInformation.class).getName());
    patientInfo.setAge(ds.child(userID).getValue(PatientInformation.class).getAge());
    patientInfo.setDate(ds.child(userID).getValue(PatientInformation.class).getDate());
    ArrayList<PatientInformation> arrayList = new ArrayList<>();
    arrayList.add(patientInfo);

    PatientInformationAdapter pAdapter = new PatientInformationAdapter(this, arrayList);
    listView.setAdapter(pAdapter);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...