【发布时间】:2018-08-12 04:07:18
【问题描述】:
我正在尝试制作一个在地图上显示用户添加的工作的应用程序。为了做到这一点,我正在尝试创建一个存储所有作业的实时 Firebase 数据库:
在 onCreate 方法中,将从 Firebase 数据库中所有当前作业的列表中添加标记(作业)。
到目前为止,这是我的代码:
DatabaseReference ref1 = database.getReference();
DatabaseReference jobsReference = ref1.child("Jobs");
jobsReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
jobs = new ArrayList<>();
// AddJobHandler is the object I use to store the jobs
for(DataSnapshot jobSnapShot : dataSnapshot.getChildren()) {
AddJobHandler newJob = jobSnapShot.getValue(AddJobHandler.class);
jobs.add(newJob);
}
for(int i = 0; i < jobs.size(); i++) {
Toast.makeText(map.this, jobs.get(i).getDesc(), Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
当我运行该应用程序时,我得到了 3 个祝酒词,但添加了最近工作的标题。如何将所有作业从数据库添加到作业 ArrayList?
TL; DR:作业 ArrayList 似乎只添加了最近的作业。如何让 ArrayList 添加 Firebase 实时数据库中的所有作业
【问题讨论】:
-
我认为烘烤不同的值没有任何问题。尝试通过调试器添加断点,以便检查哪里出错
-
@Killer 我使用调试器和断点来检查 ArrayList,一切似乎都运行良好。你确定我的代码没问题?
-
您在
onDataChange的末尾缺少类似adapter.notifyDataSetChanged()的内容。否则,您的适配器将不会知道数据已更改,视图也不会更新。 -
@FrankvanPuffelen 你是什么意思。我应该在哪里声明适配器?
-
嗯...也许我误解了这个问题。如果您的代码显示 3 个 toast 用于 3 个项目,那听起来很棒。什么代码不起作用?
标签: android firebase firebase-realtime-database