我正在尝试从另一个 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);
}
答案 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
。