3 回答
TA贡献1871条经验 获得超8个赞
问题是您在模型类creationDate中creationDate拥有String 类型的集合,而在数据库中则拥有long. 要解决此问题,请在您的模型类中将您的属性类型从 更改String为long:
public long creationDate;
并且请将相应的 setter 和 getter 更改为:
public long getCreationDate() {
return creationDate;
}
public void setCreationDate(long creationDate) {
this.creationDate = creationDate;
}
构造函数也应该像这样改变:
public DataService(String subject, String projectName, String endDate, String members, long creationDate, String dropbox, String evernote, String googleDocs) {
this.subject = subject;
this.projectName = projectName;
this.endDate = endDate;
this.members = members;
this.creationDate = creationDate;
this.dropbox = dropbox;
this.evernote = evernote;
this.googleDocs = googleDocs;
}
最后,只需更改以下代码行:
String creationDate = (String) dataSnapshot.child("creationDate").getValue();
到
long creationDate = dataSnapshot.child("creationDate").getValue(Long.class);
TA贡献1821条经验 获得超4个赞
尝试使用这种方式
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
DataService creationDate = dataSnapshot.getValue(DataService.class);
grouplist.add(dataService);
Log.d(TAG, String.valueOf(grouplist));
}
您正面临错误,因为您正试图将值对象强制转换为字符串类。所以你使用上面陈述的代码你只需你可以toString()用每个getValue()值方法调用该方法作为
String creationDate = dataSnapshot.child("creationDate").getValue().toString();
//convert land value to String value not into the String class object
您还需要更改String member为List<User> member并更改其数据类型 List 的 setter 和 getter 方法的另一件事。
请记住:我假设 User 是一个包含用户数据的类。如果它是一个简单的 String 那么你可以使用 String 而不是 User
TA贡献1801条经验 获得超16个赞
而不是这个
String creationDate = (String) dataSnapshot.child("creationDate").getValue();
String dropbox = (String) dataSnapshot.child("dropbox").getValue();
String endDate = (String) dataSnapshot.child("endDate").getValue();
String evernote = (String) dataSnapshot.child("evernote").getValue();
String googleDocs = (String) dataSnapshot.child("googleDocs").getValue();
String members = (String) dataSnapshot.child("members").getValue();
String projectName = (String) dataSnapshot.child("projectName").getValue();
String subject = (String) dataSnapshot.child("subject").getValue();
像这样做
String creationDate = dataSnapshot.child("creationDate").getValue().toString();
String dropbox = dataSnapshot.child("dropbox").getValue().toString();
String endDate = dataSnapshot.child("endDate").getValue().toString();
String evernote = dataSnapshot.child("evernote").getValue().toString();
String googleDocs = dataSnapshot.child("googleDocs").getValue().toString();
String members = dataSnapshot.child("members").getValue().toString();
String projectName = dataSnapshot.child("projectName").getValue().toString();
String subject = dataSnapshot.child("subject").getValue().toString();
toString() 用于将任何值转换为字符串。您不能像正在做的那样将任何内容转换为字符串。
另外,这段代码
DataService dataService = new DataService();
dataService.setCreationDate(creationDate);
dataService.setDropbox(dropbox);
dataService.setEndDate(endDate);
dataService.setEvernote(evernote);
dataService.setGoogleDocs(googleDocs);
dataService.setmembers(members);
dataService.setProjectName(projectName);
dataService.setSubject(subject);
grouplist.add(dataService);
可以用这个代替
DataService dataService = new DataService(subject, projectName, endDate, members, creationDate, dropbox, evernote, googleDocs);
grouplist.add(dataService);
或这个,
grouplist.add(new DataService(subject, projectName, endDate, members, creationDate, dropbox, evernote, googleDocs));
因为您已经为此类创建了构造函数。
添加回答
举报