Firebase Realtime Databse DataSnapshot только для чтения последнего значения в дочернем элементе - PullRequest
1 голос
/ 02 апреля 2020

Я звоню addValueEventListener внутри нажатия кнопки, но этот метод читает только последний элемент в узле. Я хочу прочитать все дочерние значения в узле. Что здесь пошло не так?

btnorder.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                    databaseReference.addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                            for(DataSnapshot dataSnapshot1:dataSnapshot.getChildren())
                            {
                                SelectedItems si=dataSnapshot1.getValue(SelectedItems.class);
                                si.getItemname();
                                Toast.makeText(MyBookedItems.this, ""+si.getItemname(), Toast.LENGTH_SHORT).show();
                            }
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) {

                        }
                    });

                }
        });

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Он прочитал все значения, но я получил вывод в виде сообщения Toast, из-за этого я вижу только последнее значение)

0 голосов
/ 02 апреля 2020

Я думаю, что вы можете создать список массивов и поместить в него все данные моментального снимка, а затем вы можете найти последние данные списка с найденным значением, вычтя один из длины списка. Извините за мой плохой Engli sh :( Я попытался объяснить в решении в коде ниже)

    ArrayList<SelectedItems> selectedItems = new ArrayList<SelectedItems>();
for(DataSnapshot dataSnapshot1:dataSnapshot.getChildren())
 {
     SelectedItems si=dataSnapshot1.getValue(SelectedItems.class);
     selectedItems.add(si);
   }
selectedItems.get(selectedItems.size());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...