changeweek = (Map<String,ArrayList<Integer>>)dataSnapshot.child("week").getValue();
ArrayList<Integer> test = changeweek.get("Monday");
Log.d("changeweek",changeweek.toString());
int j = test.get(2);
我在最后一行收到错误,如下所示:
java.lang.ClassCastException:java.lang.Long无法强制转换为java.lang.Integer 在com.example.fake9.tendee.ScheduleActivity $ 1 $ 1.onDataChange(ScheduleActivity.java:107)
我不知道这是怎么发生的,因为我将整数的Arraylist存储到hashmap中。以下是数据库的图片。
答案 0 :(得分:1)
Firebase SDK在内部将所有类似整数的数值存储为Long值,无论您是否需要。这有助于防止可能非常大的数字作为值。
您使用Integer类型的值转换为Map会覆盖该值,然后在类型不匹配时在运行时导致问题。您可以通过简单地将值类型从Integer更改为Long来纠正此问题。
答案 1 :(得分:0)
不是直接将 long转换为int ,而是使用 String.valueOf()将long转换为 string em> ,那么我们可以轻松地将 string 的值转换为 int ,方法是使用 Integer.parseInt() < / p>
所以你可以这样做
**
int j = Integer.parseInt(String.valueOf(test.get(2)));
**