如何在Firebase实时数据库中检索特定键的所有值?

问题描述 投票:0回答:2
 public void getFirstName(View view) {
    Query newQuery = database.getReference("users").orderByChild("firstName");
    newQuery.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            Iterable<DataSnapshot> iterator = dataSnapshot.getChildren();
            for (DataSnapshot child : iterator) {
               Friends friends = child.getValue(Friends.class);
                Toast.makeText(DBActivity.this, friends.firstName, Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

JSON file structure

我正在尝试检索所有朋友的名字。当我为上面提到的JSON文件结构尝试上面的代码时,我收到此错误“无法将java.lang.String类型的对象转换为类型com.example.seth.photopicker.Friends”。请帮我解决这个问题。

java android firebase firebase-realtime-database
2个回答
1
投票

试试这个:

Query newQuery = database.getReference("users");
newQuery.addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(DataSnapshot dataSnapshot, String s) {
           String fname=dataSnapshot.child("firstName").getValue().toString();
            Toast.makeText(DBActivity.this, friends.firstName, Toast.LENGTH_SHORT).show();
        }
    }

数据快照位于users,因为您使用的是onChildAdded,所以您无需迭代即可获得名字。


0
投票
  Query newQuery = database.getReference("users").orderByChild("firstName");
    newQuery.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
                Friends friends = dataSnapshot1.getValue(Friends.class);
                Toast.makeText(DBActivity.this, friends.firstName, Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

不使用子监听器的上述答案的等效代码。

© www.soinside.com 2019 - 2024. All rights reserved.