android - Firebase 错误转换为对象无法将 java.lang.Boolean 类型的对象转换为类型
问题描述
我正在尝试从 firebase 中的节点获取所有值并将它们转换为我的对象(我不想创建值的映射并将每个值设置为我的对象)我在下面使用此代码
dbRef = FirebaseDatabase.getInstance().getReference();
contactRef =
dbRef.child(Constants.USERS).child(userId).child(Constants.CONTACTS);
contactRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
Contact contact = ds.getValue(Contact.class);
}
}
但这给了我错误
Can't convert object of type java.lang.Boolean to type ...Objects.Contact
如果我只是打印数据快照中的值,我会得到预期的输出(为简洁起见,已删除值)
Log.d(TAG,ds.toString());
key = blocked, value =
key = msg_time_stamp, value =
key = registeredToken, value =
key = unread, value =
key = user_id, value =
key = user_image, value =
key = user_name, value =
key = user_number, value =
key = user_recent_message, value =
key = user_small_image, value =
key = user_status, value =
key = user_time_stamp, value =
与我的班级相匹配
private String registeredToken;
private String user_id;
private String user_name;
private String user_status;
private String user_number;
private String user_image;
private String user_small_image;
private long user_time_stamp;
private String user_recent_message;
private long msg_time_stamp;
private Boolean blocked;
private int unread;
有人知道为什么这可能会失败吗?这是我的完整联系人对象类
public class Contact implements Parcelable {
public static final Creator CREATOR = new Creator() {
public Contact createFromParcel(Parcel parcel) {
return new Contact(parcel);
}
public Contact[] newArray(int size) {
return new Contact[size];
}
};
private String registeredToken;
private String user_id;
private String user_name;
private String user_status;
private String user_number;
private String user_image;
private String user_small_image;
private long user_time_stamp;
private String user_recent_message;
private long msg_time_stamp;
private Boolean blocked;
private int unread;
public Contact() {
}
public String getUser_name() {
return this.user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public String getUser_status() {
return this.user_status;
}
public void setUser_status(String user_status) {
this.user_status = user_status;
}
public String getUser_id() {
return this.user_id;
}
public void setUser_id(String user_id) {
this.user_id = user_id;
}
public String getUser_number() {
return this.user_number;
}
public void setUser_number(String user_number) {
this.user_number = user_number;
}
public String getUser_image() {
return this.user_image;
}
public void setUser_image(String user_image) {
this.user_image = user_image;
}
public String getUser_small_image() {
return user_small_image;
}
public void setUser_small_image(String user_small_image) {
this.user_small_image = user_small_image;
}
public long getUser_time_stamp() {
return this.user_time_stamp;
}
public void setUser_time_stamp(long user_time_stamp) {
this.user_time_stamp = user_time_stamp;
}
public String getUser_recent_message() {
return this.user_recent_message;
}
public void setUser_recent_message(String user_recent_message) {
this.user_recent_message = user_recent_message;
}
public Boolean getBlocked() {
return this.blocked;
}
public void setBlocked(Boolean blocked) {
this.blocked = blocked;
}
public int getUnread() {
return this.unread;
}
public void setUnread(int unread) {
this.unread = unread;
}
public long getMsg_time_stamp() {
return this.msg_time_stamp;
}
public void setMsg_time_stamp(long msg_time_stamp) {
this.msg_time_stamp = msg_time_stamp;
}
public String getRegisteredToken() {
return registeredToken;
}
public void setRegisteredToken(String registeredToken) {
this.registeredToken = registeredToken;
}
@Override
public boolean equals(Object otherUserObject) {
if (!(otherUserObject instanceof Contact)) {
return false;
}
Contact that = (Contact) otherUserObject;
if (this.user_recent_message != null && that.user_recent_message != null){
return this.user_name.equals(that.user_name)
&& this.user_status.equals(that.user_status)
&& this.user_id.equals(that.user_id)
&& this.user_number.equals(that.user_number)
&& this.user_image.equals(that.user_image)
&& this.user_small_image.equals(that.user_small_image)
&& this.user_recent_message.equals(that.user_recent_message)
&& this.unread == that.unread
&& this.blocked == that.blocked
&& this.user_time_stamp == that.user_time_stamp
&& this.msg_time_stamp == that.msg_time_stamp
&& this.registeredToken.equals(that.registeredToken)
;
}
else{
return this.user_name.equals(that.user_name)
&& this.user_status.equals(that.user_status)
&& this.user_id.equals(that.user_id)
&& this.user_number.equals(that.user_number)
&& this.user_image.equals(that.user_image)
&& this.user_small_image.equals(that.user_small_image)
&& this.blocked == that.blocked
&& this.unread == that.unread
&& this.user_time_stamp == that.user_time_stamp
&& this.registeredToken.equals(that.registeredToken)
;
}
}
private Contact(Parcel in){
this.user_name = in.readString();
this.user_status = in.readString();
this.user_id = in.readString();
this.user_number = in.readString();
this.user_image = in.readString();
this.user_small_image = in.readString();
this.user_time_stamp = in.readLong();
this.user_recent_message = in.readString();
this.msg_time_stamp = in.readLong();
this.blocked = in.readInt() != 0;
this.unread = in.readInt();
this.registeredToken = in.readString();
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.user_name);
dest.writeString(this.user_status);
dest.writeString(this.user_id);
dest.writeString(this.user_number);
dest.writeString(this.user_image);
dest.writeString(this.user_small_image);
dest.writeLong(this.user_time_stamp);
dest.writeString(this.user_recent_message);
dest.writeLong(this.msg_time_stamp);
dest.writeInt(this.blocked ? 1 : 0);
dest.writeInt(this.unread);
dest.writeString(this.registeredToken);
}
public static class ContactsList {
private List<Contact> contactsList;
public List<Contact> getContactList() {
return contactsList;
}
}
}
解决方案
将子事件侦听器换成标准事件侦听器显然是我的问题
推荐阅读
- icons - 如何在 kml 中引用本地自定义图标?
- php - 安装了 php-xml 扩展的 Wordpress XML-RPC POST 返回 32700 错误
- unix-timestamp - 在 Conky 中,如何将 Unix 时间转换为小时和分钟?(时:分)
- c++ - 无法异步启动带有对象参数的函数
- python - 如何使用 Python 在该文件中复制 JSON 文件的一部分?
- java - 读取“dictionary.txt”的内容并将所有四个字母单词添加到 ADT ArrayList
单词 = 新的 ArrayList<>(); - java - Java LinkedList 在其源代码中有空的构造函数
- kubernetes - 我在 kubernetes pod 上看不到 sysout 日志
- c# - 如何同时使用 NAudio 生成信号和录音?
- p5.js - 如何在 p5.js 中使用相机跟踪球体?