Android firebase - показать конкретные данные - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь создать проект базы данных Firebase Realtime, в котором хранятся данные либо типа 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 голосов
/ 05 июня 2018

Если вы хотите отобразить только значение свойства 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...