【发布时间】:2022-06-12 13:02:41
【问题描述】:
由于某些原因,我删除了父节点并将所有子节点直接放在根节点下
但是当我得到根节点的引用时,我无法访问子数据
databaseReference = FirebaseDatabase.getInstance().getReference();
model = new Model();
quotes_list = new ArrayList<>();
databaseReference.addValueEventListener(new ValueEventListener() {
@SuppressLint("SetTextI18n")
@Override
public void onDataChange(@NonNull @org.jetbrains.annotations.NotNull DataSnapshot snapshot) {
for (DataSnapshot dataSnapshot1 : snapshot.getChildren()) {
model = dataSnapshot1.getValue(Model.class);
if (model != null) {
quotes_list.add(model.getTitle());
position = randomQ.nextInt(quotes_list.size());
Log.d(TAG, quotes_list.toString());
}
}
quotesTxt.setText(quotes_list.get(position));
countTxt.setText(position + "/" + quotes_list.size());
Log.d(TAG, quotes_list.toString());
}
@Override
public void onCancelled(@NonNull @org.jetbrains.annotations.NotNull DatabaseError error) {
Toast.makeText(HomeActivity.this, "Error", Toast.LENGTH_SHORT).show();
Log.d(TAG, error.getMessage());
}
});
【问题讨论】:
-
“我做不到”真的很难解决。当您在调试器中运行此代码时会发生什么,您期望会发生什么?你的
onDataChangegettin 有没有打电话?如果没有,是否会改为调用onCancelled? -
请编辑您的问题并添加弗兰克要求的信息,也请回复@。
-
@FrankvanPuffelen 我期待从 firebase 获取报价并将其显示为文本,这是 json drive.google.com/file/d/1c7T7TwfvcBhl8eg8FoBFoZU984xi-MPH/…
-
我理解您的期望,但这并不能回答我第一条评论中的问题。你
onDataChange被叫到了吗?如果没有,您的onCancelled是否会被调用。有了这些基本的调试信息,这里的人就更有可能发现问题所在。 -
好的,我签入 logcat 但它显示为 null ,这是我获取 Log.d("TAG", quotes_list.toString());
标签: java android firebase firebase-realtime-database