com.google.firebase.database.DatabaseException:无法将java.lang.String类型的对象转换为com.example.yehezkiel.eclassapp.DaftarTugas类型

时间:2018-07-18 05:57:23

标签: java android firebase firebase-realtime-database android-recyclerview

我已经在堆栈溢出中尝试了很多求解代码,但是它仍然是错误的。请帮助我

firebase数据库结构: here database

这是tugas的火力基地结构,表现不错。但是仍然没有其父母的名字。所以我想添加他们 enter image description here

错误代码:

  

E / UncaughtException:com.google.firebase.database.DatabaseException:   无法将类型java.lang.String的对象转换为type   com.example.yehezkiel.eclassapp.DaftarTugas                            在com.google.android.gms.internal.zzelw.zzb(未知来源)                            位于com.google.android.gms.internal.zzelw.zza(未知来源)                            位于com.google.firebase.database.DataSnapshot.getValue(未知来源)                            在com.example.yehezkiel.eclassapp.TwoFragment $ 1.onDataChange(TwoFragment.java:90)                            在com.google.android.gms.internal.zzegf.zza(未知来源)                            com.google.android.gms.internal.zzeia.zzbyc(未知来源)                            com.google.android.gms.internal.zzeig.run(未知来源)                            在android.os.Handler.handleCallback(Handler.java:742)                            在android.os.Handler.dispatchMessage(Handler.java:95)                            在android.os.Looper.loop(Looper.java:157)                            在android.app.ActivityThread.main(ActivityThread.java:5555)                            在java.lang.reflect.Method.invoke(本机方法)                            在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:745)                            在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:635)

DaftarTugas.java

package com.example.yehezkiel.eclassapp;

    /**
     * Created by Yehezkiel on 7/12/2018.
     */

    public class DaftarTugas{
        private String judul_tugas;
        private String deskripsi_tugas;
        private String tanggal_kumpul;
        private String tanggal_tugas;
        private String nama_matkul;


        public DaftarTugas(String nama_matkul,String judul_tugas, String deskripsi_tugas, String tanggal_kumpul, String tanggal_tugas) {
            this.nama_matkul = nama_matkul;
            this.judul_tugas = judul_tugas;
            this.deskripsi_tugas = deskripsi_tugas;
            this.tanggal_kumpul = tanggal_kumpul;
            this.tanggal_tugas = tanggal_tugas;
        }

        public DaftarTugas() {

        }


        public String getNama_matkul() {
            return nama_matkul;
        }

        public void setNama_matkul(String nama_matkul) {
            this.nama_matkul = nama_matkul;
        }


        public String getJudul_tugas() {
            return judul_tugas;
        }

        public void setJudul_tugas(String judul_tugas) {
            this.judul_tugas = judul_tugas;
        }

        public String getDeskripsi_tugas() {
            return deskripsi_tugas;
        }

        public void setDeskripsi_tugas(String deskripsi_tugas) {
            this.deskripsi_tugas = deskripsi_tugas;
        }

        public String getTanggal_kumpul() {
            return tanggal_kumpul;
        }

        public void setTanggal_kumpul(String tanggal_kumpul) {
            this.tanggal_kumpul = tanggal_kumpul;
        }

        public String getTanggal_tugas() {

            return tanggal_tugas;
        }

        public void setTanggal_tugas(String tanggal_tugas) {

            this.tanggal_tugas = tanggal_tugas;
        }
    }

我的TwoFragment:

 for(int i = 0;i<obj2.size();i++){
            mataKuliahRef.child(obj2.get(i)).child("name").addValueEventListener(new ValueEventListener() {
                @Override

                public void onDataChange(DataSnapshot dataSnapshot1) {
                    tugas = dataSnapshot1.getValue(DaftarTugas.class);
                    mAdapter.notifyDataSetChanged();


                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });

            mataKuliahRef.child(obj2.get(i)).child("tugas").addValueEventListener(new ValueEventListener() {

                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    listTugas.clear();
                    if (dataSnapshot.exists()) {
                        for (DataSnapshot dataHasil : dataSnapshot.getChildren()) {
                            final String idTugas = dataHasil.getKey();

                            Log.e("Yhz2", idTugas);

                            daftarTugasRef.child(idTugas).addListenerForSingleValueEvent(new ValueEventListener() {
                                @Override
                                public void onDataChange(DataSnapshot dataSnapshot2) {
                                    tugas = dataSnapshot2.getValue(DaftarTugas.class);
                                    listTugas.add(tugas);
                                    mAdapter.notifyDataSetChanged();
                                }

                                @Override
                                public void onCancelled(DatabaseError databaseError) {

                                }
                            });

                        }

                }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
        }

我想将2个差分值添加到1个适配器,当我从child。(“ name”)添加值时,这个错误。我认为这里是主要问题:

mataKuliahRef.child(obj2.get(i)).child("name").addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot1) {
        tugas = dataSnapshot1.getValue(DaftarTugas.class);
        mAdapter.notifyDataSetChanged();

    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

1 个答案:

答案 0 :(得分:0)

错误消息显示为Can't convert object of type java.lang.String to type com.example.yehezkiel.eclassapp.DaftarTugas……这可能是试图将.child("name")解析(可能只返回String)到类DaftarTugas中的结果

一个实例可以不进行解析(很难知道实际返回的内容):

DaftarTugas item = new DaftarTugas();
item.setName(tugas);
tugas.add(item);

或添加一个仅接受名称的构造函数。