我的应用程序中有一个活动,我想在其中显示所有经过身份验证的用户的列表。为此,我使用了一个列表视图和一个数组适配器。
问题:当我查询我的用户并在列表视图上显示他们时,列表显示两行都包含“null”。我不知道为什么。
final String userId = user.getUid();
database = FirebaseDatabase.getInstance().getReference(sharedPreferences.getString("school",null)).child("users").child(userId);
userList = (ListView) findViewById(R.id.highscoreList);
final Query users = database;
users.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot data: dataSnapshot.getChildren()){
userArray.add(data.child("username").getValue()+ "") ;
}
ArrayAdapter adapter = new ArrayAdapter(StudentListActivity.this, android.R.layout.simple_list_item_1, userArray);
userList.setAdapter(adapter);
}
};
数据库
据我所知,您database
已经指向特定学校的特定用户。例如,路径/SomeSchoolName/Users/LAGbzHr...
包含单个用户的属性。在这种情况下,for
不需要侦听器中的循环,并且实际上会导致您对 JSON 深入一层。
这应该更适合您共享的数据结构:
users.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
userArray.add(dataSnapshot.child("username").getValue(String.class)) ;
ArrayAdapter adapter = new ArrayAdapter(StudentListActivity.this, android.R.layout.simple_list_item_1, userArray);
userList.setAdapter(adapter);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句