我已经在堆栈溢出中尝试了很多求解代码,但是它仍然是错误的。请帮助我
这是tugas的火力基地结构,表现不错。但是仍然没有其父母的名字。所以我想添加他们
错误代码:
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) {
}
});
答案 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);
或添加一个仅接受名称的构造函数。