Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Firebase仅获取以下用户的帖子_Android_Firebase_Firebase Realtime Database_Firebase Authentication - Fatal编程技术网

Android Firebase仅获取以下用户的帖子

Android Firebase仅获取以下用户的帖子,android,firebase,firebase-realtime-database,firebase-authentication,Android,Firebase,Firebase Realtime Database,Firebase Authentication,我想在下面显示用户someone id的帖子。 我正在使用FirebaseRecyclerAdapter获取帖子 我的数据库id结构如下所示是json "Allposts" : { "-LnDkoPgr0fPAUSnackF" : { "author" : "jack", "postimage" : "posturl", "profile" : "profileurl", "uid" : "8WZ6jPIvVuNUEjR1G1ewEPpr2Ln2" }, "-Lnll3vNF8

我想在下面显示用户someone id的帖子。 我正在使用FirebaseRecyclerAdapter获取帖子

我的数据库id结构如下所示是json

"Allposts" : {

"-LnDkoPgr0fPAUSnackF" : {
  "author" : "jack",
  "postimage" : "posturl",
  "profile" : "profileurl",
  "uid" : "8WZ6jPIvVuNUEjR1G1ewEPpr2Ln2"
},
"-Lnll3vNF8wABv899SoQ" : {
  "author" : "merry",
  "postimage" : "posturl",
  "profile" : "profileurl",
  "uid" : "KOag2Br7MOaJqJNSFbcTD3ljEnh2"
}

"Users" : {
    "8WZ6jPIvVuNUEjR1G1ewEPpr2Ln2" : {
      "following" : {
        "KOag2Br7MOaJqJNSFbcTD3ljEnh2" : true
      },
      "name" : "username",
      "posts" : {
        "-KnDkoPdke4p4Ns8NUkR" : true
      },

      "profilepic" : "profileurl",
      "userName" : "username"
    },
    "KOag2Br7MOaJqJNSFbcTD3ljEnh2" : {

      "following" : {
        "8WZ6jPIvVuNUEjR1G1ewEPpr2Ln2" : true,
        "KOag2Br7MOaJqJNSFbcTD3ljEnh2" : true
      },
      "name" : "name",
      "posts" : {
        "-KnDl3vFUlSxyRm0z547" : true
      },
      "profilepic" : "profileurl",
      "userName" : "username"
    }
  },

"UsersPost" : {
    "8WZ6jPIvVuNUEjR1G1ewEPpr2Ln2" : {
      "-KnDkoPdke4p4Ns8NUkR" : {
        "author" : "jack",
        "full_url" : "posturl",
        "profile" : "profileurl",
        "uid" : "8WZ6jPIvVuNUEjR1G1ewEPpr2Ln2"
      }
    },
    "KOag2Br7MOaJqJNSFbcTD3ljEnh2" : {
      "-KnDl3vFUlSxyRm0z547" : {
        "author" : "marry",
        "full_url" : "posturl",
        "profile" : profileurl",
        "uid" : "KOag2Br7MOaJqJNSFbcTD3ljEnh2"
      }
    }
  },
},

我使用以下方法获得以下帖子

mFollowing = FirebaseDatabase.getInstance().getReference().child("Users").child(currentUser).child("following");
mDatabase = FirebaseDatabase.getInstance().getReference().child("UsersPost");

protected void onStart() {
        super.onStart();

        mFollowing.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                for(DataSnapshot following : dataSnapshot.getChildren()){

                   DatabaseReference ref =  mDatabase.child(following.getKey());
                    mAdapter = new FirebaseRecyclerAdapter<Post, PostViewHolder>(Post.class,
                            R.layout.post_item,PostViewHolder.class,ref) {
                        @Override
                        protected void populateViewHolder(PostViewHolder viewHolder, Post model, int position) {
                            viewHolder.bindToPost(model);
                        }
                    };
                    mRecyclerView.setAdapter(mAdapter);
                }

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }

}
仅显示uid 3的post,未显示uid 1和2的post


如何显示以下节点下所有用户的帖子?

您需要获取
mRecyclerView.setAdapter(mAdapter)从for循环中取出,并将其放置在for循环结束后


希望它能有所帮助。

您本身不需要
datasnapshot
。这应该可以正常工作,因为您使用的是
FirebaseRecyclerAdapter

mFollowing = FirebaseDatabase.getInstance().getReference().child("Users").child(currentUser).child("following");
mDatabase = FirebaseDatabase.getInstance().getReference().child("UsersPost");

protected void onStart() {
        super.onStart();    

DatabaseReference ref =  mDatabase.child(following.getKey());
                    mAdapter = new FirebaseRecyclerAdapter<Post, PostViewHolder>(Post.class,
                            R.layout.post_item,PostViewHolder.class,ref) {
                        @Override
                        protected void populateViewHolder(PostViewHolder viewHolder, Post model, int position) {
                            viewHolder.bindToPost(model);
                        }
                    };
                    mRecyclerView.setAdapter(mAdapter);
                }

  }

}
mfollow=FirebaseDatabase.getInstance().getReference().child(“用户”).child(“当前用户”).child(“以下”);
mDatabase=FirebaseDatabase.getInstance().getReference().child(“UsersPost”);
受保护的void onStart(){
super.onStart();
DatabaseReference ref=mDatabase.child(在.getKey()之后);
mAdapter=新的FirebaseRecyclerAdapter(Post.class,
R.布局.后视图项目,后视图支架.类别,参考){
@凌驾
受保护的void populateViewHolder(PostViewHolder、Post模型、int位置){
viewHolder.bindToPost(模型);
}
};
mRecyclerView.setAdapter(mAdapter);
}
}
}

任何人请给出答案…我做了,但仍然没有工作你有任何其他想法来获得用户跟踪的唯一帖子吗?没有任何开发人员的回答?这是一个没有任何专家回答的问题,请尝试获取这一行
databaseref=mDatabase.child(following.getKey())也从for循环中退出。我们如何才能做到这一点?我认为它在外循环中是不可访问的
mFollowing = FirebaseDatabase.getInstance().getReference().child("Users").child(currentUser).child("following");
mDatabase = FirebaseDatabase.getInstance().getReference().child("UsersPost");

protected void onStart() {
        super.onStart();    

DatabaseReference ref =  mDatabase.child(following.getKey());
                    mAdapter = new FirebaseRecyclerAdapter<Post, PostViewHolder>(Post.class,
                            R.layout.post_item,PostViewHolder.class,ref) {
                        @Override
                        protected void populateViewHolder(PostViewHolder viewHolder, Post model, int position) {
                            viewHolder.bindToPost(model);
                        }
                    };
                    mRecyclerView.setAdapter(mAdapter);
                }

  }

}