Android firebase - 显示特定数据

时间:2018-06-05 04:43:52

标签: java android firebase firebase-realtime-database

我正在尝试创建一个Firebase实时数据库项目,其中存储的数据是类型A或类型B等。这就是它在控制台上的样子:

Firebase数据库

enter image description here

然后,用户可以添加更多帖子,这些帖子会保存到数据库中,然后显示在ListView上。

我的代码

final DatabaseReference room = FirebaseDatabase.getInstance().getReference().getRoot();

    chatRoomAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, chatList);
    lvChatRoom.setAdapter(chatRoomAdapter);

    btnAddChatRoomMa.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            strChatRoomName = etChatRoom.getText().toString();
            etChatRoom.setText("");

            Map<String, Object> chatMap = new HashMap<>();
            chatMap.put(strChatRoomName + " -TYPEA", "");
            room.updateChildren(chatMap);
        }
    });

    room.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Iterator iterator = dataSnapshot.getChildren().iterator();
            Set<String> set = new HashSet<>();

            while (iterator.hasNext()) {
                set.add(((DataSnapshot) iterator.next()).getKey());
            }
            chatList.clear();
            chatList.addAll(set);
            chatRoomAdapter.notifyDataSetChanged();
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

我只想显示例如TYPEA(在数据库上),而不显示其余部分。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

如果您只想显示属性TYPEA的值,请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference ref = rootRef.child("fruit-TYPEA");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String fruitTYPEA = dataSnapshot.getValue(String.class);
        Log.d("TAG", fruitTYPEA);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
ref.addListenerForSingleValueEvent(valueEventListener);

输出结果为:orange