From f14c65698b1f3047369e564987b1ba40ed909d3d Mon Sep 17 00:00:00 2001 From: ztang Date: Wed, 26 Jul 2017 19:22:39 -0400 Subject: [PATCH 1/2] add retrolambda --- app/build.gradle | 8 ++++++++ build.gradle | 2 ++ 2 files changed, 10 insertions(+) diff --git a/app/build.gradle b/app/build.gradle index 8b820a1..71c15b2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,4 +1,6 @@ apply plugin: 'com.android.application' +apply plugin: 'me.tatarka.retrolambda' +apply plugin: 'com.jakewharton.hugo' android { compileSdkVersion 25 @@ -17,6 +19,12 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } + + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } } dependencies { diff --git a/build.gradle b/build.gradle index 74b2ab0..4b7afb9 100644 --- a/build.gradle +++ b/build.gradle @@ -6,6 +6,8 @@ buildscript { } dependencies { classpath 'com.android.tools.build:gradle:2.2.3' + classpath 'me.tatarka:gradle-retrolambda:3.4.0' + classpath 'com.jakewharton.hugo:hugo-plugin:1.2.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files From e0f710f4ee2b9a53e6e08ad8c3436ee354c30e91 Mon Sep 17 00:00:00 2001 From: ztang Date: Wed, 26 Jul 2017 19:24:36 -0400 Subject: [PATCH 2/2] format code --- app/src/main/AndroidManifest.xml | 79 ++++---- .../android/samples/ui/OperatorsActivity.java | 6 +- .../operators/DisposableExampleActivity.java | 24 +-- .../ui/operators/IntervalExampleActivity.java | 2 +- .../ui/operators/MergeExampleActivity.java | 180 ++++++++++++++++-- .../ui/pagination/PaginationActivity.java | 2 +- .../android/samples/ui/rxbus/RxBus.java | 4 +- .../samples/ui/rxbus/RxBusActivity.java | 3 +- .../android/samples/utils/AppConstant.java | 4 +- .../activity_compose_operator_example.xml | 8 +- app/src/main/res/layout/activity_example.xml | 18 +- .../main/res/layout/activity_networking.xml | 20 +- .../main/res/layout/activity_operators.xml | 78 ++++---- .../main/res/layout/activity_pagination.xml | 10 +- app/src/main/res/layout/activity_rxbus.xml | 12 +- .../main/res/layout/activity_selection.xml | 28 +-- app/src/main/res/layout/item_pagination.xml | 10 +- .../android/samples/ExampleUnitTest.java | 2 +- 18 files changed, 324 insertions(+), 166 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9b4c4f7..be42d0f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,8 +1,8 @@ + package="com.rxjava2.android.samples"> - + - + - + + android:label="@string/operators"/> + android:label="@string/networking"/> + android:label="@string/rx_bus"/> + android:label="@string/pagination"/> + android:label="@string/simple"/> + android:label="@string/map"/> + android:label="@string/zip"/> + android:label="@string/disposable"/> + android:label="@string/take"/> + android:label="@string/timer"/> + android:label="@string/interval"/> + android:label="@string/SingleObserver"/> + android:label="@string/CompletableObserver"/> + android:label="@string/Flowable"/> + android:label="@string/reduce"/> + android:label="@string/buffer"/> + android:label="@string/filter"/> + android:label="@string/skip"/> + android:label="@string/scan"/> + android:label="@string/replay"/> + android:label="@string/concat"/> + android:label="@string/merge"/> + android:label="@string/defer"/> + android:label="@string/distinct"/> + android:label="@string/last"/> + android:label="@string/replay_subject"/> + android:label="@string/publish_subject"/> + android:label="@string/behavior_subject"/> + android:label="@string/async_subject"/> + android:label="@string/throttle_last"/> + android:label="@string/debounce"/> + android:label="@string/window"/> + android:label="@string/throttle_first"/> - + diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/OperatorsActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/OperatorsActivity.java index 63df8a2..390aef9 100644 --- a/app/src/main/java/com/rxjava2/android/samples/ui/OperatorsActivity.java +++ b/app/src/main/java/com/rxjava2/android/samples/ui/OperatorsActivity.java @@ -146,7 +146,7 @@ public void startAsyncSubjectActivity(View view) { } public void startThrottleFirstActivity(View view) { - startActivity(new Intent(OperatorsActivity.this,ThrottleFirstExampleActivity.class)); + startActivity(new Intent(OperatorsActivity.this, ThrottleFirstExampleActivity.class)); } public void startThrottleLastActivity(View view) { @@ -158,11 +158,11 @@ public void startDebounceActivity(View view) { } public void startWindowActivity(View view) { - startActivity(new Intent(OperatorsActivity.this,WindowExampleActivity.class)); + startActivity(new Intent(OperatorsActivity.this, WindowExampleActivity.class)); } public void startDelayActivity(View view) { - startActivity(new Intent(OperatorsActivity.this,DelayExampleActivity.class)); + startActivity(new Intent(OperatorsActivity.this, DelayExampleActivity.class)); } } diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/DisposableExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/DisposableExampleActivity.java index 2dd124b..3c00251 100644 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/DisposableExampleActivity.java +++ b/app/src/main/java/com/rxjava2/android/samples/ui/operators/DisposableExampleActivity.java @@ -26,9 +26,20 @@ public class DisposableExampleActivity extends AppCompatActivity { private static final String TAG = DisposableExampleActivity.class.getSimpleName(); + private final CompositeDisposable disposables = new CompositeDisposable(); Button btn; TextView textView; - private final CompositeDisposable disposables = new CompositeDisposable(); + + static Observable sampleObservable() { + return Observable.defer(new Callable>() { + @Override + public ObservableSource call() throws Exception { + // Do some long running operation + SystemClock.sleep(2000); + return Observable.just("one", "two", "three", "four", "five"); + } + }); + } @Override protected void onCreate(Bundle savedInstanceState) { @@ -84,15 +95,4 @@ public void onNext(String value) { } })); } - - static Observable sampleObservable() { - return Observable.defer(new Callable>() { - @Override - public ObservableSource call() throws Exception { - // Do some long running operation - SystemClock.sleep(2000); - return Observable.just("one", "two", "three", "four", "five"); - } - }); - } } diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/IntervalExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/IntervalExampleActivity.java index 22469be..ee0bd03 100644 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/IntervalExampleActivity.java +++ b/app/src/main/java/com/rxjava2/android/samples/ui/operators/IntervalExampleActivity.java @@ -24,9 +24,9 @@ public class IntervalExampleActivity extends AppCompatActivity { private static final String TAG = IntervalExampleActivity.class.getSimpleName(); + private final CompositeDisposable disposables = new CompositeDisposable(); Button btn; TextView textView; - private final CompositeDisposable disposables = new CompositeDisposable(); @Override protected void onCreate(Bundle savedInstanceState) { diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/MergeExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/MergeExampleActivity.java index 0cd7487..32de896 100644 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/MergeExampleActivity.java +++ b/app/src/main/java/com/rxjava2/android/samples/ui/operators/MergeExampleActivity.java @@ -10,9 +10,16 @@ import com.rxjava2.android.samples.R; import com.rxjava2.android.samples.utils.AppConstant; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + import io.reactivex.Observable; +import io.reactivex.ObservableSource; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; +import io.reactivex.functions.BiFunction; +import io.reactivex.functions.Function; /** * Created by amitshekhar on 28/08/16. @@ -38,26 +45,177 @@ public void onClick(View view) { }); } - /* + /* * Using merge operator to combine Observable : merge does not maintain - * the order of Observable. - * It will emit all the 7 values may not be in order - * Ex - "A1", "B1", "A2", "A3", "A4", "B2", "B3" - may be anything - */ + * the order of Observable. + * It will emit all the 7 values may not be in order + * Ex - "A1", "B1", "A2", "A3", "A4", "B2", "B3" - may be anything + */ + + private void doSomeWork() { + final String[] aStrings = {"A1", "A2", "A3", "A4"}; + Observable.fromArray(aStrings).flatMap(new Function>>() { + @Override + public ObservableSource> apply(String s) throws Exception { + return getKeysV2(s); + } + }).reduce(new BiFunction, List, List>() { + @Override + public List apply(List strings, List strings2) throws Exception { + List result = new ArrayList(strings.size() + strings2.size()); + result.addAll(strings); + result.addAll(strings2); + return result; + } + }).toSingle().toObservable().subscribe(getListObserver1()); + + + } + + private void doSomeWorkV555() { + final String[] aStrings = {"A1", "A2", "A3", "A4"}; + + + Observable.combineLatest(getIterableObservable1(aStrings), new Function>() { + @Override + public List apply(Object[] objects) throws Exception { + List total = new ArrayList(); + for (int i = 0; i < objects.length; i++) { + total.addAll((Collection) objects[i]); + } + return total; + } + }).subscribe(getListObserver1()); + } + + private void doSomeWorkV33() { + final String[] aStrings = {"A1", "A2", "A3", "A4"}; + Observable.combineLatest(getIterableObservable1(aStrings), new Function>() { + @Override + public List apply(Object[] objects) throws Exception { + List total = new ArrayList(); + for (int i = 0; i < objects.length; i++) { + total.addAll((Collection) objects[i]); + } + return total; + } + }).subscribe(getListObserver1()); + } + + + private List>> getIterableObservable1(String[] aStrings) { + List>> result = new ArrayList<>(); + for (String aString : aStrings) { + result.add(getKeysV2(aString)); + } + + return result; + } + + private Observable> getKeysV2(String badgeId) { + List keyList = new ArrayList<>(); + for (int i = 0; i < 4; i++) { + keyList.add(i + ":" + badgeId); + + } + return Observable.just(keyList); + } + + + private void doSomeWorkV1() { + final String[] aStrings = {"A1", "A2", "A3", "A4"}; + + Observable.fromArray(aStrings).flatMap(new Function>>() { + @Override + public ObservableSource> apply(String s) throws Exception { + return getKeys(s); + } + }).toList().toObservable().map(new Function>, List>() { + @Override + public List apply(List> lists) throws Exception { + List result = new ArrayList(); + for (List list : lists) { + result.addAll(list); + } + return result; + } + }).subscribe(getListObserver1()); + } + + private Observer> getListObserver2() { + return null; + } + + + private Observable> getKeys(String badgeId) { + List keyList = new ArrayList<>(); + for (int i = 0; i < 4; i++) { + keyList.add(i + ":" + badgeId); + + } + return Observable.just(keyList); + } + + + private void doSomeWorkV0() { final String[] aStrings = {"A1", "A2", "A3", "A4"}; final String[] bStrings = {"B1", "B2", "B3"}; final Observable aObservable = Observable.fromArray(aStrings); final Observable bObservable = Observable.fromArray(bStrings); - Observable.merge(aObservable, bObservable) - .subscribe(getObserver()); + Observable.merge(aObservable, bObservable).toList().toObservable() + .subscribe(getListObserver1()); } + private Observer> getListObserver1() { + return new Observer>() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(List value) { + textView.append(" onNext : value size : " + value.size()); + textView.append(AppConstant.LINE_SEPARATOR); + + + for (String raw : value) { + textView.append(" item: " + raw); + textView.append(AppConstant.LINE_SEPARATOR); + + } + } + + @Override + public void onError(Throwable e) { + textView.append(" onError : " + e.getMessage()); + textView.append(AppConstant.LINE_SEPARATOR); + } + + @Override + public void onComplete() { + textView.append(" onComplete"); + textView.append(AppConstant.LINE_SEPARATOR); + } + }; + } + +// private Observable> getListObserver() { +// return new Observable>(){ +// +// @Override +// protected void subscribeActual(Observer> observer) { +// +// } +// }; +// } + - private Observer getObserver() { - return new Observer() { + private Observer> getObserver() { + return new Observer>() { @Override public void onSubscribe(Disposable d) { @@ -65,8 +223,8 @@ public void onSubscribe(Disposable d) { } @Override - public void onNext(String value) { - textView.append(" onNext : value : " + value); + public void onNext(List value) { + textView.append(" onNext : value size : " + value.size()); textView.append(AppConstant.LINE_SEPARATOR); Log.d(TAG, " onNext : value : " + value); } diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/pagination/PaginationActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/pagination/PaginationActivity.java index b68b312..7e118f2 100644 --- a/app/src/main/java/com/rxjava2/android/samples/ui/pagination/PaginationActivity.java +++ b/app/src/main/java/com/rxjava2/android/samples/ui/pagination/PaginationActivity.java @@ -31,6 +31,7 @@ public class PaginationActivity extends AppCompatActivity { public static final String TAG = PaginationActivity.class.getSimpleName(); + private final int VISIBLE_THRESHOLD = 1; private CompositeDisposable compositeDisposable = new CompositeDisposable(); private PublishProcessor paginator = PublishProcessor.create(); private PaginationAdapter paginationAdapter; @@ -38,7 +39,6 @@ public class PaginationActivity extends AppCompatActivity { private ProgressBar progressBar; private boolean loading = false; private int pageNumber = 1; - private final int VISIBLE_THRESHOLD = 1; private int lastVisibleItem, totalItemCount; private LinearLayoutManager layoutManager; diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/rxbus/RxBus.java b/app/src/main/java/com/rxjava2/android/samples/ui/rxbus/RxBus.java index cdc81b0..0858f0e 100644 --- a/app/src/main/java/com/rxjava2/android/samples/ui/rxbus/RxBus.java +++ b/app/src/main/java/com/rxjava2/android/samples/ui/rxbus/RxBus.java @@ -9,11 +9,11 @@ public class RxBus { + private PublishSubject bus = PublishSubject.create(); + public RxBus() { } - private PublishSubject bus = PublishSubject.create(); - public void send(Object o) { bus.onNext(o); } diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/rxbus/RxBusActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/rxbus/RxBusActivity.java index 2911b42..668dcd1 100644 --- a/app/src/main/java/com/rxjava2/android/samples/ui/rxbus/RxBusActivity.java +++ b/app/src/main/java/com/rxjava2/android/samples/ui/rxbus/RxBusActivity.java @@ -22,9 +22,9 @@ public class RxBusActivity extends AppCompatActivity { public static final String TAG = RxBusActivity.class.getSimpleName(); + private final CompositeDisposable disposables = new CompositeDisposable(); TextView textView; Button button; - private final CompositeDisposable disposables = new CompositeDisposable(); @Override protected void onDestroy() { @@ -66,5 +66,4 @@ public void onClick(View v) { } - } diff --git a/app/src/main/java/com/rxjava2/android/samples/utils/AppConstant.java b/app/src/main/java/com/rxjava2/android/samples/utils/AppConstant.java index 4a8b40f..503eb2c 100644 --- a/app/src/main/java/com/rxjava2/android/samples/utils/AppConstant.java +++ b/app/src/main/java/com/rxjava2/android/samples/utils/AppConstant.java @@ -5,10 +5,10 @@ */ public final class AppConstant { + public static final String LINE_SEPARATOR = "\n"; + private AppConstant() { // This class in not publicly instantiable. } - public static final String LINE_SEPARATOR = "\n"; - } diff --git a/app/src/main/res/layout/activity_compose_operator_example.xml b/app/src/main/res/layout/activity_compose_operator_example.xml index 0f6e27c..0e22cf9 100644 --- a/app/src/main/res/layout/activity_compose_operator_example.xml +++ b/app/src/main/res/layout/activity_compose_operator_example.xml @@ -1,8 +1,8 @@ + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context="com.rxjava2.android.samples.ui.compose.ComposeOperatorExampleActivity"> diff --git a/app/src/main/res/layout/activity_example.xml b/app/src/main/res/layout/activity_example.xml index 9012a9e..cf0e274 100644 --- a/app/src/main/res/layout/activity_example.xml +++ b/app/src/main/res/layout/activity_example.xml @@ -1,12 +1,12 @@ + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + android:paddingBottom="@dimen/activity_vertical_margin" + android:paddingLeft="@dimen/activity_horizontal_margin" + android:paddingRight="@dimen/activity_horizontal_margin" + android:paddingTop="@dimen/activity_vertical_margin">