26h*_*mkk 49 android firebase firebase-realtime-database
我一直在寻找一种在Android Firebase中获取一个子对象数据的方法.
我发现Firebase检索Android的东西.所有解决方案都建议使用"ChildEventListener",但是我需要在此时获取此数据,而不是在移动,删除,更新等时获取此数据.
我的数据以字符串形式保存在https://.firebaseio.com/users//creation中.我认为必须有一些简单的方法来访问它而不需要做太多,因为如果我将确切的URL复制到我的浏览器,我可以看到:'创建:"2015/05/31 21:33:55"'就在我的"Firebase Forge Dashboard"中.
如何在没有听众的情况下访问它?
Fra*_*len 58
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) {
}
});
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,value事件将针对数据的初始状态触发一次,然后每次该数据的值发生更改时再触发一次.
请花一点时间来完成快速入门.它不应该超过15分钟,它将为您节省大量的头脑和问题.在火力地堡的Android指南可能是一个很好的下一个目的地,对于这个问题,具体如下:https://firebase.google.com/docs/database/android/read-and-write
len*_*ooh 22
您不直接读取值.您可以使用它进行设置.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) {
}
});
Run Code Online (Sandbox Code Playgroud)
资料来源:https://www.firebase.com/docs/android/guide/retrieving-data.html#section-reading-once
bat*_*l.g 11
我以这种方式存储我的数据:
accountsTable ->
key1 -> account1
key2 -> account2
Run Code Online (Sandbox Code Playgroud)
为了获得对象数据:
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) { }
});
Run Code Online (Sandbox Code Playgroud)
tej*_*hah 11
只需获取特定的节点数据,它的工作对我来说非常完美
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());
}
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
104182 次 |
最近记录: |