Java 如何将数据从实时firebase数据库拉入阵列?我希望将数组中的静态数据更改为firebase数据

Java 如何将数据从实时firebase数据库拉入阵列?我希望将数组中的静态数据更改为firebase数据,java,android,arrays,firebase,android-database,Java,Android,Arrays,Firebase,Android Database,我创建了一个自定义日历,它使用从github链接获取的数组“HomeCollection”,以便在我的android应用程序中创建自定义日历。目前,事件数据已硬编码到此数组中(请参见下面的代码段),但希望从我的firebase数据库中获取事件属性,而不是从我创建的数据库中获取并保存此类事件数据(请参见下面的图片链接) HomeCollection.date\u collection\u arr=new ArrayList(); 家庭收藏。日期收集。添加(新的家庭收藏(“2018-11-21”,

我创建了一个自定义日历,它使用从github链接获取的数组“HomeCollection”,以便在我的android应用程序中创建自定义日历。目前,事件数据已硬编码到此数组中(请参见下面的代码段),但希望从我的firebase数据库中获取事件属性,而不是从我创建的数据库中获取并保存此类事件数据(请参见下面的图片链接)

HomeCollection.date\u collection\u arr=new ArrayList();
家庭收藏。日期收集。添加(新的家庭收藏(“2018-11-21”,“冬季桌上测验”,“晚上7-10点,俱乐部会所”,“俱乐部会所”,“一起参加冬季桌上测验”,5便士,4张桌,有很多大奖要赢得”);
家庭收藏。日期?收藏?提交添加(新的家庭收藏(“2018-11-03”,“u21 1区培训”,“上午10-11点,俱乐部场地”,“俱乐部会所”,“每周1区培训。取决于天气”);
家庭收藏。日期?收藏?提交添加(新的家庭收藏(“2018-11-03”,“u21第2组培训”,“上午11-12点,俱乐部场地”,“俱乐部会所”,“每周第2组培训。天气相关”);
家庭收藏。日期?收藏?增加(新的家庭收藏(“2018-11-10”,“u21 1区培训”,“上午10-11点,俱乐部场地”,“俱乐部会所”,“每周1区培训。取决于天气”);
家庭收藏。日期?收藏?提交添加(新的家庭收藏(“2018-11-10”,“u21第2组培训”,“上午11-12点,俱乐部场地”,“俱乐部会所”,“每周第2组培训。天气相关”);
家庭收藏。日期?收藏?提交添加(新的家庭收藏(“2018-11-17”,“u21 1区培训”,“上午10-11点,俱乐部场地”,“俱乐部会所”,“每周1区培训。取决于天气”);
家庭收藏。收藏日期。收藏地址。添加(新的家庭收藏(“2018-11-17”,“u21第2组培训”,“上午11-12点,俱乐部场地”,“俱乐部会所”,“每周第2组培训。取决于天气”);
家庭收藏。日期?收藏?提交添加(新的家庭收藏(“2018-11-24”,“u21第一组训练”,“上午10-11点,俱乐部场地”,“俱乐部会所”,“每周第1组训练。取决于天气”);
家庭收藏。收藏日期。收藏地址添加(新的家庭收藏(“2018-11-24”,“u21第2组培训”,“上午11-12点,俱乐部场地”,“俱乐部会所”,“每周第2组培训。取决于天气”)*/
cal_month=(GregorianCalendar)GregorianCalendar.getInstance();
cal_month_copy=(GregoriaCalendar)cal_month.clone();

hwAdapter=新的hwAdapter(这个,cal_月,HomeCollection.date_collection_arr),这样您就可以创建一个Javabean来保存所有这些数据。为作为对象存储的所有数据生成
getter
setter
方法。例如,为对象属性(如:eventDate、eventDescription等)创建
getter
setter
方法,并将bean命名为
EventBean.java

现在像这样使用
childEventListener

mDatabaseReference = mFirebaseDatabase.getReference().getChild("event");
mDatabaseReference.addChildEventListener(new OnChildEventListener(){

@Override
public void onChildAdded(DataSnapshot snapshot, String previousChildName){
EventBean data = snapshot.getValue(EventBean.class);//now you have got data in the 
eventbean instance
System.out.println(data.getEventDate());
}
});
我希望这就是您所寻找的。

1)您必须在代码中获得firebase数据引用

DatabaseReference mFireBaseDatabaseReference = FirebaseDatabase.getInstance().getReference();
2) 然后添加firebase侦听器以获取数据:

mFireBaseDatabaseReference.child("events").addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                //you can parse the data in your models here like this
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
Event event = childSnapshot.getValue(Event.class);
HomeCollection.date_collection_arr.add(event);
}
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

您可以按照firebase android文档了解有关firebase realtimedatabase的更多信息:我在使用上述代码时收到一个错误,但它让我想到了以下代码:mFireBaseDatabaseReference.child(“事件”).addListenerForSingleValueEvent(新值EventListener(){@Override public void onDataChange(@NonNull DataSnapshot DataSnapshot){for(DataSnapshot childSnapshot:DataSnapshot.getChildren()){Event Event=childSnapshot.getValue(Event.class);homecolection.date\u collection\u arr.add(新的homecolection(Event.getEventDate(),Event.getEventName(),Event.getEventTime()),event.getEventLocation(),event.getEventDescription());}但是event.getTime()等似乎没有将数据从firebase拉入阵列中您希望得到的预期结果是什么?