Updated AndroidX

pull/164/head
M66B 6 years ago
parent 21488514ed
commit 2e8f6ebbd0

@ -175,22 +175,22 @@ dependencies {
def core_version = "1.2.0-beta01" def core_version = "1.2.0-beta01"
def appcompat_version = "1.1.0" def appcompat_version = "1.1.0"
def fragment_version = "1.2.0-beta02" def fragment_version = "1.2.0-rc01"
def recyclerview_version = "1.1.0-beta05" def recyclerview_version = "1.1.0-rc01"
def coordinatorlayout_version = "1.1.0-beta01" def coordinatorlayout_version = "1.1.0-rc01"
def constraintlayout_version = "2.0.0-beta2" def constraintlayout_version = "2.0.0-beta2"
def material_version = "1.1.0-beta01" def material_version = "1.1.0-beta01"
def browser_version = "1.2.0-alpha08" def browser_version = "1.2.0-alpha09"
def lbm_version = "1.0.0" def lbm_version = "1.0.0"
def swiperefresh_version = "1.0.0" def swiperefresh_version = "1.0.0"
def documentfile_version = "1.0.1" def documentfile_version = "1.0.1"
def lifecycle_version = "2.2.0-beta01" def lifecycle_version = "2.2.0-rc01"
def room_version = "2.2.0" def room_version = "2.2.1"
def paging_version = "2.1.0" def paging_version = "2.1.0"
def preference_version = "1.1.0" def preference_version = "1.1.0"
def work_version = "2.2.0" def work_version = "2.2.0"
def exif_version = "1.1.0-rc01" def exif_version = "1.1.0-rc01"
def biometric_version = "1.0.0-rc01" def biometric_version = "1.0.0-rc02"
def billingclient_version = "2.0.3" def billingclient_version = "2.0.3"
def javamail_version = "1.6.5-SNAPSHOT" def javamail_version = "1.6.5-SNAPSHOT"
def jsoup_version = "1.12.1" def jsoup_version = "1.12.1"

@ -37,7 +37,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
* @param <T> The type of the live data * @param <T> The type of the live data
* @hide internal * @hide internal
*/ */
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
public abstract class ComputableLiveData<T> { public abstract class ComputableLiveData<T> {
@SuppressWarnings("WeakerAccess") /* synthetic access */ @SuppressWarnings("WeakerAccess") /* synthetic access */
final Executor mExecutor; final Executor mExecutor;

@ -65,6 +65,7 @@ public class Transformations {
* {@code mapFunction} to each value set. * {@code mapFunction} to each value set.
*/ */
@MainThread @MainThread
@NonNull
public static <X, Y> LiveData<Y> map( public static <X, Y> LiveData<Y> map(
@NonNull LiveData<X> source, @NonNull LiveData<X> source,
@NonNull final Function<X, Y> mapFunction) { @NonNull final Function<X, Y> mapFunction) {
@ -129,6 +130,7 @@ public class Transformations {
* value set * value set
*/ */
@MainThread @MainThread
@NonNull
public static <X, Y> LiveData<Y> switchMap( public static <X, Y> LiveData<Y> switchMap(
@NonNull LiveData<X> source, @NonNull LiveData<X> source,
@NonNull final Function<X, LiveData<Y>> switchMapFunction) { @NonNull final Function<X, LiveData<Y>> switchMapFunction) {
@ -158,4 +160,35 @@ public class Transformations {
}); });
return result; return result;
} }
/**
* Creates a new {@link LiveData} object that does not emit a value until the source LiveData
* value has been changed. The value is considered changed if {@code equals()} yields
* {@code false}.
*
* @param source the input {@link LiveData}
* @param <X> the generic type parameter of {@code source}
* @return a new {@link LiveData} of type {@code X}
*/
@MainThread
@NonNull
public static <X> LiveData<X> distinctUntilChanged(@NonNull LiveData<X> source) {
final MediatorLiveData<X> outputLiveData = new MediatorLiveData<>();
outputLiveData.addSource(source, new Observer<X>() {
boolean mFirstTime = true;
@Override
public void onChanged(X currentValue) {
final X previousValue = outputLiveData.getValue();
if (mFirstTime
|| (previousValue == null && currentValue != null)
|| (previousValue != null && !previousValue.equals(currentValue))) {
mFirstTime = false;
outputLiveData.setValue(currentValue);
}
}
});
return outputLiveData;
}
} }

Loading…
Cancel
Save