Firebase won't bind boolean value to field
If your boolean field is named isUp
, then the getter must be named isIsUp()
or getIsUp()
. Alternatively, if you want a getter named isUp
, the field name would be up
.
Alternatively, you can use the @PropertyName annotation from Firebase Database to handle this. Also, it's better to include setters as well.
Pass a custom Java object, if the class that defines it has a default constructor that takes no arguments and has public getters for the properties to be assigned.
public class PingReport {
private long durationMs;
private boolean isUp;
private long timestampMillis;
public PingReport() {
// required by Firebase
}
public PingReport(long durationMs, boolean isUp, long timestampMillis) {
this.durationMs = durationMs;
this.isUp = isUp;
this.timestampMillis = timestampMillis;
}
public long getDurationMs() {
return durationMs;
}
@PropertyName("isUp")
public boolean isUp() {
return isUp;
}
public long getTimestampMillis() {
return timestampMillis;
}
}
I ran into this problem in Kotlin. I had several boolean values. All of them were set properly except for the one that started with is
. To fix this, I made it a custom getter and that fixed the problem:
data class FirebaseEvent(
val description: String? = null,
val disableLogin: Boolean? = null,
val isDVR: Boolean? = null
) {
fun getIsDVR(): Boolean? {
// this is needed to trick Kotlin into using this getter instead of generating its own which breaks firebase
return isDVR
}
}