Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Android推送Firebase中存储的数组中的数据?_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java 如何使用Android推送Firebase中存储的数组中的数据?

Java 如何使用Android推送Firebase中存储的数组中的数据?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我需要将数据添加到存储在数据库中的数组中,如下所示: 地点: 0:“新项目” 1:“新物品” 2:“新项目” 我的问题是如何将数据推入Firebase中存储的数组,而无需使用哈希映射?例如,下一次推送的数据将导致: 地点: 0:“旧项目” 1:“维特姆” 2:“旧物品” 3:“新项目” 我知道如果我使用下面给出的方法,数据将被删除,并添加一个新的数据集 Utils.eventsRef.child(events.getUid()).child("arrayTicket").setValue(

我需要将数据添加到存储在数据库中的数组中,如下所示: 地点:

0:“新项目”

1:“新物品”

2:“新项目”

我的问题是如何将数据推入Firebase中存储的
数组
,而无需使用
哈希映射
?例如,下一次推送的数据将导致:

地点: 0:“旧项目”

1:“维特姆”

2:“旧物品”

3:“新项目”

我知道如果我使用下面给出的方法,数据将被删除,并添加一个新的数据集

Utils.eventsRef.child(events.getUid()).child("arrayTicket").setValue(str);

有人能帮我吗?

根据您的评论,要将阵列添加到Firebase实时数据库中,您需要首先将
阵列
转换为
列表
,如以下代码行所示:

String[] items = {"newItem", "newItem", "newItem"};
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference arrayTicketRef = rootRef.child("arrayTicket");
arrayTicketRef.setValue(Arrays.asList(items));
Firebase控制台中的结果将是:

Firebase-root
   |
   --- arrayTicket
         |
         --- 0: "newItem"
         |
         --- 1: "newItem"
         |
         --- 2: "newItem"

你解决问题了吗?还没有,我忘了,我只是更改了数据库结构。如果你找到了答案,你能与我分享吗?为了更好地理解,你有一个数组,其中包含一些字符串元素,你想将该数组添加到Firebase数据库中,如
0:“new Item”1:“new Item”,2:“new Item”
,对吗?是的,这正是我需要的。好的,我马上给你写一个答案。好的,有了它,您可以初始化数组,但如何在不删除旧值的情况下在arrayTicket中推送新值呢?在这种情况下,您必须读取现有数据(arrayTicket对象),然后使用添加的新值将其写回。如果要执行大量追加操作,这样的数组并不总是存储数据列表的最佳方式。为此,最好使用push()方法将数据推送到某个位置。我正在寻找一种方法,可以在不读取现有数据的情况下进行推送。我的限制是,如果两台设备同时读取相同的数据并同时推送,其中一台将删除其他用户数据,这就是为什么我在寻找一种不读取现有数据的推送方式。在Firebase实时数据库中,您无法实现这一点。但是,这实际上是可能的,因为您可以从数组中添加/删除项,而无需读取现有数据,然后将其写回。现在可以吗?如果你认为我的问题可能是有用的和清楚的,请考虑投票表决。▲). 非常感谢,谢谢。