Android Firebase, просто получите данные одного дочернего объекта

Я искал способ получить данные одного дочернего объекта в Android Firebase.

Я нашел такие вещи, как Firebase, извлечения дочернего Android . Все решения предлагают использовать «ChildEventListener», однако мне нужно получить эти данные в данный момент, а не когда они будут перемещены, удалены, обновлены и т. Д.

Мои данные хранятся в https: //.firebaseio.com/users//creation как строка. Я считаю, что должен быть какой-то простой способ получить доступ к нему, не требуя слишком многого, потому что, если я скопирую точный URL-адрес в свой браузер, я могу увидеть: «создание:« 2015/05/31 21:33:55 »' Прямо там, в моей «Firebase Forge Dashboard».

Если кто-нибудь знает, как получить доступ к этому без слушателя, для изменения, которое было бы оценено!

Спасибо!

Solutions Collecting From Web of "Android Firebase, просто получите данные одного дочернего объекта"

Слушатели Firebase запускают как исходные данные, так и любые изменения.

Если вы хотите синхронизировать данные в коллекции, используйте ChildEventListener . Если вы хотите синхронизировать один объект, используйте ValueEventListener . Обратите внимание, что в обоих случаях вы не получаете данные. Вы синхронизируете его, что означает, что обратный вызов может вызываться несколько раз: для исходных данных и всякий раз, когда данные обновляются.

Это описано в руководстве по быстрой установке Firebase для Android . Соответствующий код и цитата:

 FirebaseRef.child("message").addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot snapshot) { System.out.println(snapshot.getValue()); //prints "Do you have data? You'll love Firebase." } @Override public void onCancelled(DatabaseError databaseError) { } }); 

В приведенном выше примере событие значения будет срабатывать один раз для исходного состояния данных, а затем снова каждый раз, когда значение этих данных изменяется.

Пожалуйста, потратьте несколько минут, чтобы пройти этот быстрый старт. Это не должно занимать более 15 минут, и это избавит вас от большого количества царапин и вопросов. Руководство по Firebase для Android, вероятно, является хорошим следующим назначением, специально для этого вопроса: https://firebase.google.com/docs/database/android/read-and-write

Вы прямо не читаете значение. Вы можете установить его с помощью .setValue() , но на ссылочном объекте нет .getValue ().

Вы должны использовать слушателя. Если вы просто хотите прочитать значение один раз, вы используете ref.addListenerForSingleValueEvent() .

Пример:

 Firebase ref = new Firebase("YOUR-URL-HERE/PATH/TO/YOUR/STUFF"); ref.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { String value = (String) dataSnapshot.getValue(); // do your stuff here with value } @Override public void onCancelled(FirebaseError firebaseError) { } }); 

Источник: https://www.firebase.com/docs/android/guide/retrieving-data.html#section-reading-once

Просто получить данные конкретного узла, и его работа идеально подходит для меня

 mFirebaseInstance.getReference("yourNodeName").getRef().addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) { Log.e(TAG, "======="+postSnapshot.child("email").getValue()); Log.e(TAG, "======="+postSnapshot.child("name").getValue()); } } @Override public void onCancelled(DatabaseError error) { // Failed to read value Log.e(TAG, "Failed to read app title value.", error.toException()); } }); 

Я храню данные таким образом:

 accountsTable -> key1 -> account1 key2 -> account2 

Для получения данных объекта:

 accountsDb = mDatabase.child("accountsTable"); accountsDb.child("some key").addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot snapshot) { try{ Account account = snapshot.getChildren().iterator().next() .getValue(Account.class); } catch (Throwable e) { MyLogger.error(this, "onCreate eror", e); } } @Override public void onCancelled(DatabaseError error) { } });