首页 > 解决方案 > 带有用户的 RecyclerView 为空

问题描述

我正在尝试使用 Firebase 和 Android Studio 制作一个聊天应用程序。我正在使用 RecyclerView 来查看所有在 firebase 数据库中只有名字的用户,但每次都是空的。有人可以告诉我要做什么修改吗?

这就是我的数据库的样子。![1] https://imgur.com/a/U06syNe

我尝试了很多东西,但似乎没有任何效果。尝试了很多来自 github 的教程。

UsersActivity 类是 RecyclerView 和 FirebaseRecyclerAdapter

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 ( "users" );


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


        userslist.setLayoutManager ( new LinearLayoutManager ( this ) );


    }


    @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 );

        }


    }
}

这是我的用户模型

public class Users {
    public String name;
    public Users(){}
    public Users(String name){
    this.name=name;}
    public String getName () {
        return name;
    }

    public void setName (String name) {
        this.name = name;
    }


}


gradle 看起来像这样(我正在使用 androidx)

   implementation 'com.google.firebase:firebase-core:16.0.9'
   implementation 'com.google.firebase:firebase-firestore:19.0.2'
   implementation 'com.google.firebase:firebase-storage:17.0.0'
   implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta1'
   implementation 'com.google.firebase:firebase-auth:17.0.0'
   implementation 'com.google.firebase:firebase-database:17.0.0'
   implementation 'androidx.legacy:legacy-support-v4:1.0.0'
   testImplementation 'junit:junit:4.13-beta-3'
   androidTestImplementation 'androidx.test:runner:1.2.0'
   androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
   implementation 'com.firebaseui:firebase-ui-database:5.0.0'
   implementation 'com.android.support:multidex:1.0.3'

我希望从数据库中获取数据并存储在 RecyclerView 中以显示我的所有用户。

标签: androidfirebasefirebase-realtime-databasefirebaseui

解决方案


代码中没有显示 getitemcount() 方法。在 recyclerview 中实现该方法是绝对必要的。


推荐阅读