【发布时间】:2026-02-01 03:05:01
【问题描述】:
我正在制作一个用于学习西班牙语读写的安卓应用。 我正在尝试从 firestore 获取数组映射。在那里,我有一个文档,其中包含一个名为“levels”的字段,其中包含地图。像这样:
级别:{ 1:“爸爸”,“妈妈”, 2:“地图”, 3:“卡玛”、“卡萨” }
see firebase data structure here
我是这样获取地图的:
HashMap <String, String[]> levelsMap = new HashMap<String, String[]>();
levelsMap = (HashMap<String, String[]>) documentSnapshot.get("levels");
到目前为止,在调试时,地图已经正确获取并放入levelsMap变量中。
调试器显示如下:
levelsMap={HashMap@13651} size:3
"1" -> {ArrayList@13656} size = 2
key = "1"
value = {ArrayList@13656} size = 2
0 = "papa"
1 = "mama"
"2" -> {ArrayList@13673} size = 1
key = "2"
value = {ArrayList@13673} size = 1
0 = "mapa"
"3" -> {ArrayList@13675} size = 1
key = "3"
value = {ArrayList@13675} size = 1
0 = "cama"
然后,当我尝试从 levelsMap 中获取一个数组时,正如调试器所说的那样,它是一个 arrayList,我尝试使用以下行获取它
List<String> levels = levelsMap.get("1");
但 android studio 指出一个错误。它说变量“levels”需要一个列表,但它得到一个数组。那么我尝试以下(正如android studio建议的那样)
String[] level1 = levelsMap.get("1");
这次 android studio 没有指出错误,但应用程序在该行崩溃。 控制台中的错误说:
java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String[]
所以,这些行似乎都不起作用。那么,如何获取关卡数组呢?
【问题讨论】:
-
如果应用程序崩溃,Android Studio 应该在 Logcat 中显示原因。请张贴输出。
标签: java android arrays arraylist google-cloud-firestore