как извлечь FireBase json ArrayList из данных Arraylist и сохранить его в Arraylist для последующего отображения в Textview - PullRequest
0 голосов
/ 29 апреля 2019

enter image description here
Я хочу получить данные из базы данных для последующего отображения в текстовом представлении. но моментальный снимок данных не получает все ключи и значения (то есть дату, месяц, год), которые достигают только даты. мне нужно датировать месяц и год в едином текстовом представлении .. для синхронизации я вставляю данные в виде строки в огненную базу ..

Я пытался добавить значение даты в Array-list, но оно показало ноль. когда я проверяю в отладчике. я меньше знаю об отладке.

Проблема во втором цикле FOR

Мне также нужно отобразить счет и сумму. В списке просмотра даты (полная дата), счет и сумма мне нужно отобразить

ArrayList<String> account;
ArrayList<String> amount;
ArrayList<ArrayList<String>> datedata;

final DateDataHelper dateDataHelper = new DateDataHelper(AccountBillList.this, date, month, year);

myRef = database.getReference("purchasebill");
myRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            for (DataSnapshot ds : dataSnapshot.getChildren()) {
                billlistHelper = ds.getValue(BilllistHelper.class);
                assert billlistHelper != null;
                account.add(billlistHelper.getAccount());
                amount.add(billlistHelper.getAmount());
                for (DataSnapshot dd : ds.child("datedata").getChildren(){
                    dateDataHelper = dd.getValue(DateDataHelper.class);

                    date.add(dateDataHelper.getDate());
                    month.add(dateDataHelper.getMonth());
                    year.add(dateDataHelper.getYear());
                }
                intendby.add(billlistHelper.getIntendby());
                vendorname.add(billlistHelper.getVendorName());

            }
            billListAdapter.notifyDataSetChanged();
        }


class DateDataHelper {
    private String date;
    private String month;
    private String year;

public DateDataHelper(AccountBillList accountBillList, ArrayList<String> date, ArrayList<String> month, ArrayList<String> year) {
}

public DateDataHelper(String date, String month, String year) {
    this.date = date;
    this.month = month;
    this.year = year;
}
// getter and setter are there over here
}

1 Ответ

0 голосов
/ 29 апреля 2019

Вы ссылаетесь на узел purchasebill, а затем вы зацикливаетесь на прямых потомках purchasebill, которые gameworld и datamination.

Чтобы решить вашу проблему, вы можете добавитьссылка на child datamination, поэтому он не будет зацикливаться внутри gameworld, поэтому вы можете сделать следующее:

myRef.child("datamination").addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            billlistHelper = dataSnapshot.getValue(BilllistHelper.class);
            assert billlistHelper != null;
            account.add(billlistHelper.getAccount());
            amount.add(billlistHelper.getAmount());
            for (DataSnapshot dd : dataSnapshot.child("datedata").getChildren(){
                dateDataHelper = dd.getValue(DateDataHelper.class);

                date.add(dateDataHelper.getDate());
                month.add(dateDataHelper.getMonth());
                year.add(dateDataHelper.getYear());
            }
            intendby.add(billlistHelper.getIntendby());
            vendorname.add(billlistHelper.getVendorName());

        }
        billListAdapter.notifyDataSetChanged();

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