android - 带有用户的 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 中以显示我的所有用户。
解决方案
代码中没有显示 getitemcount() 方法。在 recyclerview 中实现该方法是绝对必要的。
推荐阅读
- php - 为什么 laravel 5.8 不能在专用网络上使用数据库会话驱动程序登录?
- loops - 在 VagrantFile 中使用循环创建 X 个磁盘
- dialogflow-es - 如何在每个会话的 Dialogflow 中存储会话 ID 和参数值?
- javascript - 异步承诺递归与异步值的未知供应
- python - 一键索引多个值的字典
- css - 如何在每个 TouchableOpacity 上禁用双边框?
- java - 我们可以在同时运行测试时使用静态 Pojo 方法吗?
- ios - Xcode11中用Objective-C将UITableView分成几个部分
- api-platform.com - 如何使用 api-platform 获取强制过滤器?
- php - 如何呈现 WordPress 博客列表以显示在 WP Bakery 内容下方