我想通过身份验证用户从 firebase 检索数据。我使用 ListView 来显示数据。但是运行后不显示。
public class InfoDisplayActivity extends AppCompatActivity {
private ListView listViewINFO;
DatabaseReference databaseReference;
FirebaseAuth firebaseAuth;
List<UserInformation> infoList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_info_display);
listViewINFO = findViewById(R.id.listViewINFO);
firebaseAuth = FirebaseAuth.getInstance();
if (firebaseAuth.getCurrentUser() == null){
finish();
startActivity(new Intent(this,RegisterActivity.class));
}
//FirebaseUser user = firebaseAuth.getCurrentUser();
infoList = new ArrayList<>();
}
@Override
protected void onStart() {
super.onStart();
databaseReference = FirebaseDatabase.getInstance().getReference("User Information");
FirebaseUser user = firebaseAuth.getCurrentUser();
String UserID = user.getUid();
databaseReference.child("User Information").child(UserID).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot INFOSnapshot : dataSnapshot.getChildren()){
UserInformation userInfo = INFOSnapshot.getValue(UserInformation.class);
infoList.add(userInfo);
}
UserInfoAdapter userInfoAdapter = new UserInfoAdapter(InfoDisplayActivity.this, infoList);
listViewINFO.setAdapter(userInfoAdapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
我关注 this YouTube 上的教程。
最佳答案
您的代码中的问题是您使用了两次 User Information
引用。一旦声明了 databaseReference
对象:
databaseReference = FirebaseDatabase.getInstance().getReference("User Information");
// ^
其次,当您附加监听器时:
databaseReference.child("User Information").child(UserID).addListenerForSingleValueEvent(/* ... */);
// ^
要解决这个问题,只需从上面的代码行中删除 .child("User Information")
:
databaseReference.child(UserID).addListenerForSingleValueEvent(/* ... */);
关于android - 使用身份验证用户从 firebase 检索数据不显示在 ListView 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54731412/