我正在尝试使用firebase在我的应用中添加上次看到的功能。因此,我尝试使用mTimeStamp
方法使用ServerValue.TIMESTAMP
更新用户的时间戳(每个用户都有onDisconnect()
键)值,如果用户上线,我正在尝试更新用户的{引用mTimeStamp
上的ValueEventListener
{1}}。因此,在一种情况下,更新的值是.info/connected
(我在某处读过,当它从Firebase数据库中检索回来时返回为Map<String,String>
原语),在一种情况下,它保存为{{1} }}
long
现在我正在尝试使用boolean
方法从firebase中检索数据,现在public class PublicUserProfile {
private int mAge,mSM;
private double mPR;
private Long mTimeStamp;
private Boolean mIsOnline;
public PublicUserProfile(){}
public PublicUserProfile(int mAge, int mSM, double mPR, Long mTimeStamp) {
Log.e("chimap","chad");
this.mAge = mAge;
this.mSM = mSM;
this.mPR = mPR;
this.mTimeStamp = mTimeStamp;
}
public PublicUserProfile(int mAge, int mSM, double mPR, Boolean mIsOnline) {
Log.e("idhar aye","4 wale");
this.mAge = mAge;
this.mSM = mSM;
this.mPR = mPR;
this.mIsOnline = mIsOnline;
}
public PublicUserProfile(int mAge, int mSM, double mPR) {
Log.e("idhar aye","3 wale");
this.mAge = mAge;
this.mSM = mSM;
this.mPR = mPR;
}
public int getmAge() {
return mAge;
}
public int getmSM() {
return mSM;
}
public double getmPR() {
return mPR;
}
public Long getmTimeStamp() {
return mTimeStamp;
}
public Boolean getmIsOnline() {
return mIsOnline;
}
}
只能在DataSnapshot.getValue(<T> class)
类中保存为long或boolean {我正在获取{ {1}}错误,类mTimeStamp
无法转换为PublicUserProfile
。
要解决此错误,我在DatabaseException
java.lang.Long
中创建了一个额外字段,以便在值为myPackagename.PublicUserProfile
而不是PublicUserProfile
时调用第二个构造函数,但我又是得到mIsOnline
对象无法转换为Boolean
的{{1}}错误,即使在我查看数据库'mTimeStamp'的同时设置为Long
但是我觉得这个错误是合理的,因为在数据库和模型类中,密钥和字段名称的名称应该分别相同。此方法也存在问题,因为即使我尝试在数据库中保存两个密钥,一个用于DatabaseException
(用于保存时间戳(java.lang.Long
)),另一个用于PublicUserProfile
(用于保存天气人员)是否在线(true
)),因为当我调用long
方法时,我只能执行一项操作,即在数据库中删除mTimeStamp
或boolean
到mIsOnline
还有一个问题与保存两个密钥有关,即我想要检索10个onDisconnect()
并且我想在mIsOnline
中按顺序显示它们,以便首先显示在线人员然后最近的离线用户和Firebase仅提供一种setValue
方法,因此我只能使用一个密钥mTimeStamp
或PublicUserProfile
。
我应如何制作RecyclerView
或如何拨打数据库以在我的应用中添加状态系统?