简体   繁体   English

Firebase 实时数据库 DataSnapshot only 读取子项中的最后一个值

[英]Firebase Realtime Databse DataSnapshot only Read the last value in the child

I'm calling addValueEventListener inside the button click, but this method only reads the last item in the node.我在按钮单击中调用addValueEventListener ,但此方法仅读取节点中的最后一项。 I want to read all the child value in the node What went wrong here?我想读取节点中的所有子值 这里出了什么问题?

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) {

                        }
                    });

                }
        });

I think you can create an array list and put all snapshot data into it, and then you can find the last data of the list with the value you find by subtracting one from the length of the list.我认为你可以创建一个数组列表并将所有快照数据放入其中,然后你可以通过从列表的长度中减去一个你找到的值找到列表的最后一个数据。 Sorry for my bad English :( I have tried to explain in the solution in the code below)对不起,我的英语不好:(我已经尝试在下面代码的解决方案中进行解释)

    ArrayList<SelectedItems> selectedItems = new ArrayList<SelectedItems>();
for(DataSnapshot dataSnapshot1:dataSnapshot.getChildren())
 {
     SelectedItems si=dataSnapshot1.getValue(SelectedItems.class);
     selectedItems.add(si);
   }
selectedItems.get(selectedItems.size());

它读取了所有值,但我将输出作为 Toast 消息,因此我只能看到最后一个值)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM