【发布时间】:2018-04-21 13:15:36
【问题描述】:
尝试从 firebase 检索数据时出现以下错误 com.google.firebase.database.DatabaseException:无法将 java.lang.Long 类型的对象转换为 com.ui.controls.CodeDescMast 类型。
我的 POJO 类包含一个 int 和 string。我已经定义了空构造函数、getter/setter 方法,所有这些都是公共的。
CodeDescMast cdeDescMast = dSnpSht.getValue(CodeDescMast.class) 正在产生数据库异常错误。
问题是我使用同一个类进行保存和检索,为什么会出现这个错误。
我的 POJO 课程
public class CodeDescMast {
int code;
String desc;
public CodeDescMast() { }
public CodeDescMast(int code, String desc) {
this.code = code;
this.desc = desc;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
Firebase 助手类
public class FbaseHelper {
DatabaseReference dbRef;
Boolean saved= null;
CodeDescMast codeDescMast;
ArrayList<CodeDescMast> cdeDescAryList;
public FbaseHelper() { }
public FbaseHelper(DatabaseReference refDb) {
this.dbRef = refDb;
cdeDescAryList = new ArrayList<CodeDescMast>() ;
}
public void read(Context context) {
String csvLine;
InputStream is=null ;
try {
is = context.getAssets().open("b.csv") ;
BufferedReader reader = new BufferedReader(new InputStreamReader(is)) ;
codeDescMast = new CodeDescMast();
while((csvLine = reader.readLine())!=null) {
String[] row = csvLine.split(",") ;
if (! row[1].equals("Desc")) {
codeDescMast.setCode(Integer.valueOf(row[0]));
codeDescMast.setDesc(row[1]);
fBaseSave();
}
}
is.close();
} catch(IOException ioex) {
ioex.printStackTrace();
}
}
public Boolean fBaseSave() {
try {
dbRef.push().setValue(codeDescMast) ;
saved = true;
}catch (DatabaseException dbEx) {
dbEx.printStackTrace();
saved = false ;
}
return saved;
}
从 Firebase 中检索
public ChildEventListener chldEvtListner = new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
for(DataSnapshot dSnpSht : dataSnapshot.getChildren()) {
long a = dataSnapshot.getChildrenCount();
CodeDescMast cdeDescMast = dSnpSht.getValue(CodeDescMast.class) ;
cdeDescAryList.add(cdeDescMast) ;
}
}
来自 Firebase 的 JSON
{
"-LAXQwrXU01IA5ha5eBW" : {
"code" : 602,
"desc" : "xxxxxxxxxxx"
},
"-LAXQwrezdMRpfVdEVY8" : {
"code" : 603,
"desc" : "xxxxxxx"
}
}
【问题讨论】:
-
您用来获取数据的参考是什么?
标签: android firebase-realtime-database