В Android Spinner не отображаются данные базы данных Firebase Realtime? - PullRequest
0 голосов
/ 14 декабря 2018

У меня были некоторые проблемы в течение довольно долгого времени, застрявшего на этом.Я хочу сделать спиннер в Android Studio и использовать базу данных Firebase.Но я не могу заставить счетчик отображать какие-либо данные базы данных в счетчике.Я пытался ответить на некоторые похожие вопросы, но столкнулся с теми же проблемами.Так как я новичок в Firebase, я не уверен, как на самом деле создать индексы, чтобы извлечь из него.

Вот мой текущий код:

    FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference fDatabaseRoot = database.getReference("locations");


    fDatabaseRoot.child("buildings").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            final List<String> buildings = new ArrayList<>();

            for (DataSnapshot buildingSnapshot: dataSnapshot.getChildren()) {
                String buildingName = buildingSnapshot.child("buildingName").getValue(String.class);
                buildings.add(buildingName);
            }

            Spinner buildingSpinner = findViewById(R.id.spinner);
            ArrayAdapter<String> buildingAdapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_spinner_item, buildings);
            buildingAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            buildingSpinner.setAdapter(buildingAdapter);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });`

Вот как настроена моя база данных: База данных Spinner Firebase

image

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Хорошо, поэтому, используя базу данных в реальном времени, мне пришлось изменить правила чтения и записи на true, совершенно забыл это сделать.

Помните, что дети всегда делают домашнее задание.:)

0 голосов
/ 14 декабря 2018

Вот реализация FirebaseFirestore для SnapshotListener.Вы можете проверить тип изменения данных (ADDED, MODIFIED, REMOVED) с помощью класса DocumentChange.Вы можете проверить пример здесь: https://firebase.google.com/docs/firestore/query-data/listen#view_changes_between_snapshots

FirebaseFirestore db= FirebaseFirestore.getInstance();
db.collection("locations").document("buildings").addSnapshotListener(new EventListener<QuerySnapshot>() {
        @Override
        public void onEvent(@Nullable QuerySnapshot snapshots,
                            @Nullable FirebaseFirestoreException e){
             //your action here
        }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...