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
    }
}