相关疑难解决方法(0)

如何通过方法返回DataSnapshot值?

我对Java没有多少经验.我不确定这个问题是不是很愚蠢,但是我需要从Firebase实时数据库中获取用户名,并且由于此方法而返回此名称.所以,我想出了如何获得这个值,但我不明白如何返回它作为这个方法的结果.最好的方法是什么?

private String getUserName(String uid) {
    databaseReference.child(String.format("users/%s/name", uid))
            .addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            // How to return this value?
            dataSnapshot.getValue(String.class);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {}
    });
}
Run Code Online (Sandbox Code Playgroud)

java android firebase firebase-realtime-database

33
推荐指数
2
解决办法
2万
查看次数

无法将Firebase数据库中的数据作为列表读取

firebase中的数据如下所示

这里有数据图片

我想将标记为userId的数据作为列表或数组.

我的方法是:

public static void writePostToFriends(final String userId, final String userName, final String title, final String body, final String authorPhoto){
    DatabaseReference mpostRef = FirebaseDatabase.getInstance().getReference().child("social/user/"+userId+"/friends");
    mpostRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            GenericTypeIndicator<List<Friends>> t = new GenericTypeIndicator<List<Friends>>() {};
            List<Friends> mFriends = dataSnapshot.getValue(t);
            long j = mFriends.size();
            for (long i = 0; i == j; i++){
                Friends mReadFriends = dataSnapshot.getValue(Friends.class);
                String getUid = mReadFriends.userID;
                writeNewPost(getUid, userId, userName, title, body, authorPhoto);
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        } …
Run Code Online (Sandbox Code Playgroud)

android firebase firebase-realtime-database

7
推荐指数
1
解决办法
7687
查看次数

反序列化时需要一个 List,但得到一个类 java.util.HashMap

我正在尝试从 Android 中的 Firebase 获取用户列表。

在此输入图像描述

我已经有了用户的 uuid,并使用它来尝试获取整个对象。uuid 既是节点名称又是用户节点内的字段(当然是相同的)。

这是我的代码:

DatabaseReference usersRef = FirebaseDatabase.getInstance().getReference("users");
Query query = usersRef.orderByChild("uuid").equalTo(animalMarker.getUserUid());
    query.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            Log.d(TAG, "onDataChange: xxxxxxxx---- entered onDataChange");

            // go to node "users/userUID" , becuase dataSnapshot is parent node
            for (DataSnapshot ds : dataSnapshot.getChildren()) {
                Log.d(TAG, "xxxxxxxx---- onDataChange: ds= " + ds);
                User user = ds.getValue(User.class);
                Log.d(TAG, "xxxxxxxx---- onDataChange: user=" + user);
                // createdByTV.setText("Created by \n" + user.getEmail());
            }

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) …
Run Code Online (Sandbox Code Playgroud)

java android firebase firebase-realtime-database

4
推荐指数
1
解决办法
6755
查看次数