DistinctMutableLiveData
An implementation of MutableLiveData that only emits updates when the value actually changed, i.e. when newValue != oldValue. This differs from regular MutableLiveData because if you set its value to an equal same value, it still emits an update, causing observers to get a callback.
This is more suitable than the distinctUntilChanged transformation for the cases where the values are not necessarily going to be observed: distinctUntilChanged only changes value when observers are registered.
NB: This should only be used in situations where it's guaranteed to not lead to side-effects. The most common situation where this should not be used is for instances of T that are both mutable and have a custom Object.equals implementation. This could lead to situations where a set value is ignored but mutated afterwards, meaning the value shouldn't have been ignored after all. As a guideline, only use DistinctMutableLiveData for types that could also be used as a key in a Map.
Inherited properties
Same as LiveData.getValue, except this variant throws a IllegalStateException when the LiveData instance does not have an active observer.
Same as LiveData.getValue with the exception that the returned value is up to date even when the LiveData instance does not have an observer.
Inherited functions
Convenience method to create non-mutable LiveData fields without duplicating the type.
Removes all elements from this MutableLiveData. The observers are notified of the new value if the list was changed.
Removes all elements from a LiveData's Map, notifying observers of the new value.
Transforms a LiveData containing a list of type T, which contains all the child elements from each element in this LiveData list by flattening it.
Transforms a LiveData containing a list of type T, which contains all the child elements from each element in this LiveData list together with its source, by flattening it.
Performs operation on each entry in a LiveData's collection. Does nothing if the LiveData has no value.
Returns the value for the given key in the LiveData's value. If the key is not found, calls the defaultValue function, puts its result into the map under the given key and returns it. Creates a map if the LiveData has no value yet.
Executes and switchMaps to block if this has a true value. If this is false or null, it returns LiveData with value default. This can be used instead of ifTrue when the default value should be something other than null. Note that this requires a non-null value for T in order for Kotlin's compiler to properly spot missing null-checks.
Maps the value of the provided key, if that key exists in this map. Otherwise, no value is set. This is useful in cases where the map may not contain the requested entry but the resulting LiveData is not nullable as the client does not care about a null value. This removes the need for the client to have null checks in its code wherever the resulting LiveData is used.
Transforms LiveData containing a list that holds other LiveData instances into LiveData that contains the values from those LiveData instances. The returned LiveData will be updated when the source LiveData changes as well as when the internal LiveData instances change.
Removes a single instance of the specified element from a MutableLiveData, if it is present. The observers are notified of the new value if any of the specified elements was removed.
Removes all elements from this MutableLiveData that are also contained in the given elements collection. The observers are notified of the new value if the list was changed.
Removes the entry mapped by key from the LiveData's value, notifying observers of the new value.
Observes this LiveData for one change only and returns the one-time observer. The returned observer can be used to stop observing the LiveData when a callback is no longer desired. It is safe to remove the observer while it is executing or has been executed already.
Adds the specified element to the end of this MutableLiveData. The observers are notified of the new value.
Adds all of the elements of the specified collection to the end of this MutableLiveData. The observers are notified of the new value if the list was changed.
Removes all elements from this MutableLiveData that match the given predicate. The observers are notified of the new value if the list was changed.
Removes all elements from this MutableLiveData that are also contained in the given elements collection. The observers are notified of the new value if the list was changed.