我正在编写一个 Android 应用程序,我正在尝试检索该类的对象User.java
按 Firebase 相关表中的 ID。我想知道如何从Java端获取它,只要我尝试了中所述的示例Firebase 官方文档 https://www.firebase.com/docs/android/guide/retrieving-data.html但他们都不适合我。
以这个SO问题为例,我想要一个具有以下接口的方法:
public User readUser(String userId);
换句话说,我想执行:
readUser(-lnnROTBVv6FznK81k3n)
并检索关联的User
object
Thanks
-------------------------------------------------- - - - - - - 编辑 - - - - - - - - - - - - - - - - - - - ------------------------:
我设法用这段代码获得了值:
public void retrieveUser(final String email){
firebaseUsersRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot messageSnapshot: dataSnapshot.getChildren()) {
if(messageSnapshot.getKey().equals(Email.encodeID(email))){
retrievedUser = messageSnapshot.getValue(User.class);
break;
}
}
}
@Override
public void onCancelled(FirebaseError firebaseError) { }
});
}
请不要检索 User 是一个类attribute
,因此field
。我正在从代码访问该字段,但即使我看到它采用调试器上的值,它在调用代码上为空.
有什么提示吗?我不能直接在方法本身中返回它吗?:
public User retrieveUser(final String email);
Thanks
这就是灵魂,但我没有将其放入方法中。
final String uid = "your Uid here";
// Get a reference to users
Firebase ref = new Firebase(Constants.FIREBASE_URL_USERS);
// Attach an listener to read our users
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
for (DataSnapshot user: snapshot.getChildren()) {
//this is all you need to get a specific user by Uid
if (user.getKey().equals(uid)){
wantedUser = user.getValue(User.class);
}
//**********************************************
}
Log.i(TAG, "onDataChange: " + wantedUser.getName());
}
@Override
public void onCancelled(FirebaseError firebaseError) {
System.out.println("The read failed: " + firebaseError.getMessage());
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)