首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用户列表为空

用户列表为空
EN

Stack Overflow用户
提问于 2019-06-19 05:17:11
回答 2查看 53关注 0票数 -1

我正在尝试从实时数据库中检索用户的列表,包括他们的名字和第二个名字,但是什么也没有出现。

UsersActivity类显示了数据库中的所有用户。我尝试了很多教程,但似乎都不起作用。

代码语言:javascript
复制
public class UsersActivity extends AppCompatActivity {
    private RecyclerView userslist;
    private DatabaseReference ref;
    private List<Users> mUsers;

    @Override
    protected void onCreate (Bundle savedInstanceState) {
        super.onCreate ( savedInstanceState );
        setContentView ( R.layout.activity_users );
        ref = FirebaseDatabase.getInstance ().getReference ().child ( "FirstName" );

        userslist = (RecyclerView) findViewById ( R.id.users_list );

        userslist.setHasFixedSize ( true );
        userslist.setLayoutManager ( new LinearLayoutManager ( this ) );


    }
    public void readUsers(){
        FirebaseUser firebaseUser= FirebaseAuth.getInstance ().getCurrentUser ();
        DatabaseReference reference=FirebaseDatabase.getInstance ().getReference ("spors-budy-en866");
        reference.addValueEventListener ( new ValueEventListener () {
            @Override
            public void onDataChange (@NonNull DataSnapshot dataSnapshot) {

            }

            @Override
            public void onCancelled (@NonNull DatabaseError databaseError) {

            }
        } )
    }

    @Override
    protected void onStart () {
        super.onStart ();
        FirebaseRecyclerOptions<Users> options = new FirebaseRecyclerOptions.Builder<Users> ()
                .setQuery ( ref, Users.class )
                .build ();
        FirebaseRecyclerAdapter<Users, FindFriendViewHolder> adapter = new FirebaseRecyclerAdapter<Users, FindFriendViewHolder> ( options ) {
            @Override
            protected void onBindViewHolder (@NonNull FindFriendViewHolder findFriendViewHolder, int i, @NonNull Users users) {
                findFriendViewHolder.userName.setText ( users.getName () );

            }

            @NonNull
            @Override
            public FindFriendViewHolder onCreateViewHolder (@NonNull ViewGroup parent, int viewType) {
                View view = LayoutInflater.from ( parent.getContext () ).inflate ( R.layout.users_template, parent, false );
                FindFriendViewHolder viewHolder = new FindFriendViewHolder ( view );
                return viewHolder;
            }
        };
        userslist.setAdapter ( adapter );
        adapter.startListening ();
    }

    public static class FindFriendViewHolder extends RecyclerView.ViewHolder {
        TextView userName;
        ImageView profileImage;

        public FindFriendViewHolder (@NonNull View itemView) {
            super ( itemView );
            userName = itemView.findViewById ( R.id.username1 );
            profileImage = itemView.findViewById ( R.id.profilepicture );

        }


    }
}

我的数据库规则:

代码语言:javascript
复制
{
  "rules": {
    ".read": "true",
      ".write":"true",
    "users":{
    "$user_id":{
       ".read": "auth.uid === $user_id",
       ".write": "auth.uid === $user_id"

    }
  }
}
}

我希望向我的databse.But中的所有用户显示活动是空的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-19 08:06:30

您正在设置:

代码语言:javascript
复制
ref = FirebaseDatabase.getInstance().getReference().child("FirstName");

然后用它来初始化FirebaseUI适配器:

代码语言:javascript
复制
FirebaseRecyclerOptions<Users> options = new FirebaseRecyclerOptions.Builder<Users> ()
        .setQuery(ref, Users.class )

虽然我不知道您的数据模型,但您似乎不太可能在/FirstName下有一个用户列表,这是显示使用FirebaseUI适配器的用户所必需的。

更可能的情况是,ref应该初始化为:

代码语言:javascript
复制
ref = FirebaseDatabase.getInstance().getReference("users")
票数 3
EN

Stack Overflow用户

发布于 2019-06-19 08:52:39

代码语言:javascript
复制
1-   ref=firebaseDatabase.getReference("FirstName");
2-   ref.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
  //**HERE WHERE YOU SHOULD FETCH THE DATA FROM YOUR DATABASE**



           String value=dataSnapshot.getValue(String.class);

            list.add(value);

            }

            @Override
            public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
                 list.clear();
                String value=dataSnapshot.getValue(String.class);

                list.add(value);
            }

            @Override
            public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

最后,你的数据库应该是这样的:

希望这对你有用

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56657172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档