LiveData--Transformations
1969 ワード
最近、会社は新しいGoogleフレームワークを使って、はっきり見て、jarパッケージではありません.メモをいくつか記録します.
Transformationsは、
Transformationsは、
android.arch.lifecycle
パッケージのツールクラスであり、新しいLiveData
オブジェクトの生成を変換するために使用されます.public class Transformations {
private Transformations() {
}
@MainThread
public static LiveData map(LiveData source, final Function func) {
final MediatorLiveData result = new MediatorLiveData<>();
result.addSource(source, new Observer() {
@Override
public void onChanged(@Nullable X x) {
result.setValue(func.apply(x));
}
});
return result;
}
@MainThread
public static LiveData switchMap(LiveData trigger,
final Function> func) {
final MediatorLiveData result = new MediatorLiveData<>();
result.addSource(trigger, new Observer() {
LiveData mSource;
@Override
public void onChanged(@Nullable X x) {
LiveData newLiveData = func.apply(x);
if (mSource == newLiveData) {
return;
}
if (mSource != null) {
result.removeSource(mSource);
}
mSource = newLiveData;
if (mSource != null) {
result.addSource(mSource, new Observer() {
@Override
public void onChanged(@Nullable Y y) {
result.setValue(y);
}
});
}
}
});
return result;
}
}
map(LiveData source, final Function func)
この方法では、LiveData
の例、すなわちresult
が新規に作成され、まずresult
が追加される