有什么办法从ref中获取数据作为Java中的列表

时间:2019-06-08 18:11:44

标签: android firebase firebase-realtime-database

我正在创建一个Android应用来下订单,所以我无法在实时数据库中访问孩子的物品,如何将它们作为列表或单独获取?

每当我尝试某事时,应用程序就会自动关闭,所以我知道那里出了问题

1 个答案:

答案 0 :(得分:3)

您可以使用 addValueEventListener()函数获取数据作为快照。这样,您可以迭代快照数据并添加到阵列列表中。以下是我从参考中获取数据的一些示例

private void readUsers() {

    final List<User> mUsers= new ArrayList<>();
    final FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
    DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Users");

    reference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                mUsers.clear();
                for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                    User user = snapshot.getValue(User.class);

                    assert user != null;
                    assert firebaseUser != null;

                    if (!user.getId().equals(firebaseUser.getUid())) {
                        mUsers.add(user);
                    }
                }

                userAdaptor = new UserAdaptor(getContext(), mUsers, false);
                recyclerView.setAdapter(userAdaptor);

        }

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

        }
    });
}