android - 使用身份验证用户从 firebase 检索数据不显示在 ListView 上

标签 android firebase listview

我想通过身份验证用户从 firebase 检索数据。我使用 ListView 来显示数据。但是运行后不显示。 My firebase structure

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/

相关文章:

android - 如何将测试覆盖注入(inject)默认依赖关系图中?

android - 禁用 Listview 项目单击并重新启用它

xcode - "No such module ' Firebase '"将 Firebase 添加到库中时

wpf - 将 TreeView 的布局更改为看起来像多个 ListBox

android - 如何从ListView中获取项目

javascript - 如何禁用 ListView 中特定行的编辑按钮

android - 更改 FloatingActionButton 的背景?

android - 如何在android中绘制实时数据?

android - 如何从 firebase 在 RecyclerView 中添加搜索过滤器

javascript - firebase.database.ServerValue.TIMESTAMP 返回一个对象