java.lang.ClassCastException:从 Firebase 检索数据时

我的 Firebase 实时数据库中有十进制数,但是当我检索到长值时。这是一个错误

java.lang.ClassCastException: java.lang.Double 不能转换为 java.lang.Long

然后,我尝试将代码更改为 double。但它会出现错误,例如:

java.lang.ClassCastException: java.lang.Long 不能转换为 java.lang.Double

但是,当我将 Firebase 中的值更改为整数 ex: 70 时,它表现良好并显示 70.0 与 long 值。

这是我的数据库

http://img3.mukewang.com/6141b9a100010bb604380226.jpg

Java类


 nilaiRef.child(keys).addValueEventListener(new ValueEventListener() {

            @Override

            public void onDataChange(DataSnapshot dataSnapshot) {

                listNilai.clear();

                if(dataSnapshot.exists()){

                    for(DataSnapshot dataHasil : dataSnapshot.getChildren()){

                        final long nilai_temp = (long) dataHasil.child(users.getUid()).getValue(); 

======ERROR HERE=====

                        nilaiInfoRef.child(keys).child(dataHasil.getKey()).addValueEventListener(new ValueEventListener() {

                            @Override

                            public void onDataChange(DataSnapshot dataSnapshot) {

                                if(dataSnapshot.exists()){

                                    NilaiMatakuliah nilai = dataSnapshot.getValue(NilaiMatakuliah.class);

                                    nilai.setNilai(nilai_temp);


                                    listNilai.add(nilai);

                                    mAdapter.notifyDataSetChanged();

                                    Log.e("nilais","1 "+nilai.getNilai());

                                    Log.e("nilais","2 "+nilai.getNama());

                                    Log.e("nilais","3 "+nilai.getSkala());

                                    Log.e("nilais","4 "+nilai.getBobot());



                                }


鸿蒙传说
浏览 191回答 2
2回答

慕妹3146593

看着你的数据库,你有两种类型的数据Long和double,我会推荐的第一件事是,当你将数据推送到数据库,你应该将所有的值增加一倍,即把他们与.0他们是否long。如果这是不可能的,您可以随时进行转换,假设您的值将在 double 范围内,您可以这样做:final double nilai_temp = (double) dataHasil.child(users.getUid()).getValue();注意:double对于 small d,您不能使用Double(with capital D)以这种方式进行转换。

FFIVE

也许你可以使用 java.lang.Long 的内置方法?public double doubleValue()然后实例化一个新的 java.lang.Double 如果你想保留它作为一个对象?Double myDouble = new Double (nilaiRef.doubleValue()) ;在doubleValue() 中为您完成了转换。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java