LiveData--Transformations

1981 단어
최근 회사에서 아주 새로운 Google 프레임워크를 사용했습니다. 잘 보십시오. 한두 개의jar 패키지가 아닙니다.몇 가지 필기를 기록하다.
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

좋은 웹페이지 즐겨찾기