android - 用户的 RecyclerView 为空
问题描述
我正在尝试使用 Firebase 实时数据库在 RecyclerView 中向用户显示他们的主键,但每次我尝试 RecyclerView 时都是空的。我尝试了很多教程,但似乎没有任何帮助这是我的数据库的外观:
这是我使用 RecyclerView 的类
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 ("users");
userslist = (RecyclerView) findViewById ( R.id.users_list );
userslist.setLayoutManager ( new LinearLayoutManager ( this ) );
mUsers=new ArrayList<> ( );
readUsers ();
ref.addValueEventListener ( new ValueEventListener () {
@Override
public void onDataChange (@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot snapshot:dataSnapshot.getChildren ()){
Users users=dataSnapshot.getValue (Users.class);
mUsers.add ( users );
}
}
@Override
public void onCancelled (@NonNull DatabaseError databaseError) {
}
} );
}
public void readUsers(){
FirebaseUser firebaseUser= FirebaseAuth.getInstance ().getCurrentUser ();
DatabaseReference reference=FirebaseDatabase.getInstance ().getReference ("users");
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 );
}
}
}
用户名适配器
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;
}
}
我希望 RecyclerView 在他们的主键之后填充所有用户。
解决方案
推荐阅读
- amazon-web-services - CodeDeploy 失败并显示消息“PKCS7 签名消息的验证失败”
- javascript - javascript拦截来自网络工作者的http获取+文件url
- django - 以编程方式序列化 Wagtail 页面
- nginx - 无法使用 Nginx-ingress 在 Kubernetes 中升级 websocket 连接
- mongodb - 我是否应该在 MongoDB 中将子文档拆分为单独的集合?
- java - D&D 角色统计滚轮 (Java)
- python - 解析 XML 文件以根据子元素检索父级
- sql-server - 如何保护 Vb6 应用程序和 mssql 服务器之间的连接?
- git - Git:如何提交未跟踪的内容?
- android - 如何通过显示退出的快餐栏对话框退出双后按?