尝试从另一个 firebase 数据库中检索数据

时间:2021-02-09 04:00:53

标签: android firebase firebase-realtime-database

我正在尝试从另一个 firebase 数据库中检索数据,但没有显示任何内容。我没有收到任何错误,我的应用也没有崩溃,这是一件好事,但它没有显示任何数据,而且数据库中有数据。

有人可以帮我解决这个问题吗?

T

杰森

recyclerView.setLayoutManager(layoutManager);
myUploads = new ArrayList<Model_Information>();
aAdapter = new Adapter1(getContext(), myUploads);
recyclerView.setAdapter(aAdapter);
aAdapter.notifyDataSetChanged();

DatabaseReference databaseReference = FirebaseDatabase.getInstance("https://boot0-43081.firebaseio.com/").getReference("Posts");

if (InternetConnection.checkConnection(getContext())) {
    databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if(dataSnapshot.exists()){
                for (DataSnapshot postsnapshot : dataSnapshot.getChildren()) {
                    Model_Information upload=postsnapshot.getValue(Model_Information.class);

                    myUploads.add(upload);
           
                    recyclerView.invalidate();
                }
                linearLayoutWithoutItems.setVisibility(View.GONE);
                recyclerView.setVisibility(View.VISIBLE);

             aAdapter.notifyDataSetChanged();

            }else{
                linearLayoutWithoutItems.setVisibility(View.VISIBLE);
                recyclerView.setVisibility(View.GONE);

            }

1 个答案:

答案 0 :(得分:1)

从它的外观来看,您的 Posts 节点有一个键,其下有一个用户的 UID,然后是该用户的帖子列表。

由于您的代码读取整个 Posts 节点,因此需要处理此处的两个嵌套级别:用户和帖子。所以你需要两个嵌套循环:

DatabaseReference databaseReference = FirebaseDatabase.getInstance("https://boot0-43081.firebaseio.com/").getReference("Posts");

if (InternetConnection.checkConnection(getContext())) {
    databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if(dataSnapshot.exists()){
                for (DataSnapshot userSnapshot : dataSnapshot.getChildren()) {
                    for (DataSnapshot postsnapshot : userSnapshot.getChildren()) {
                        Model_Information upload=postsnapshot.getValue(Model_Information.class);

                        myUploads.add(upload);           
                        recyclerView.invalidate();
                    }
                }
                linearLayoutWithoutItems.setVisibility(View.GONE);
                recyclerView.setVisibility(View.VISIBLE);

             aAdapter.notifyDataSetChanged();
            }else{
                linearLayoutWithoutItems.setVisibility(View.VISIBLE);
                recyclerView.setVisibility(View.GONE);
            }

或者如果您只想阅读当前用户的帖子,那就是:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference databaseReference = FirebaseDatabase.getInstance("https://boot0-43081.firebaseio.com/")
    .getReference("Posts").child(uid);

然后您可以不修改 onDataChange