From d4b29a4678e17fbd08b5ffbfc37e306701cb2170 Mon Sep 17 00:00:00 2001 From: AMIT SHEKHAR Date: Mon, 29 Aug 2016 10:15:57 +0530 Subject: [PATCH 001/141] read me updated --- README.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 209a0cb..4466967 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # Learning RxJava2 for Android by example +## How to use RxJava 2 in Android Application +## How to migrate from RxJava 1 to RxJava 2 -####This project is for : +### This project is for : * who is migrating to RxJava 2 * or just started with RxJava. @@ -29,7 +31,7 @@ If you are using RxAndroid also, then add the following compile 'io.reactivex.rxjava2:rxandroid:2.0.0-RC1' ``` -# RxJava2 Examples present in this sample project +# RxJava 2 Examples present in this sample project * RxJava 2.0 Example using `CompositeDisposable` as `CompositeSubscription` and `Subscription` have been removed. @@ -93,8 +95,8 @@ RxJava1 -> RxJava2 * Many examples are to be added -### Show some :heart: -* Be sure to click the :star: button in the upper right of this page. :v: +### Found this project useful :heart: +* Support by clicking the :star: button on the upper right of this page. :v: ### Contact - Let's become friend - [Twitter](https://twitter.com/amitiitbhu) @@ -120,7 +122,7 @@ RxJava1 -> RxJava2 limitations under the License. ``` -### Contributing to RxJava2 Android Samples +### Contributing to RxJava 2 Android Samples Just make pull request. You are in! \ No newline at end of file From 7fb98d1cec78e94b508a902814ff9d105803ecba Mon Sep 17 00:00:00 2001 From: AMIT SHEKHAR Date: Mon, 29 Aug 2016 22:54:05 +0530 Subject: [PATCH 002/141] read me updated --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 4466967..069d5dd 100644 --- a/README.md +++ b/README.md @@ -104,6 +104,8 @@ RxJava1 -> RxJava2 - [Medium](https://medium.com/@amitshekhar) - [Facebook](https://www.facebook.com/amit.shekhar.iitbhu) +### Check out [Fast Android Networking Library](https://github.com/amitshekhariitbhu/Fast-Android-Networking) for simple and easy networking in Android. + ### License ``` Copyright (C) 2016 Amit Shekhar From a85f8e647c6007469fc310c5289db66a3bfc6f33 Mon Sep 17 00:00:00 2001 From: AMIT SHEKHAR Date: Tue, 30 Aug 2016 13:18:17 +0530 Subject: [PATCH 003/141] example using defer --- README.md | 3 +- app/src/main/AndroidManifest.xml | 3 + .../android/samples/DeferExampleActivity.java | 87 +++++++++++++++++++ .../rxjava2/android/samples/MainActivity.java | 4 + .../rxjava2/android/samples/model/Car.java | 28 ++++++ app/src/main/res/layout/activity_main.xml | 7 ++ app/src/main/res/values/strings.xml | 1 + 7 files changed, 132 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/rxjava2/android/samples/DeferExampleActivity.java create mode 100644 app/src/main/java/com/rxjava2/android/samples/model/Car.java diff --git a/README.md b/README.md index 069d5dd..31b02c7 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Learning RxJava2 for Android by example +# Learning RxJava 2 for Android by example ## How to use RxJava 2 in Android Application ## How to migrate from RxJava 1 to RxJava 2 @@ -89,6 +89,7 @@ RxJava1 -> RxJava2 * [ReplayExampleActivity](https://github.com/amitshekhariitbhu/RxJava2-Android-Samples/blob/master/app/src/main/java/com/rxjava2/android/samples/ReplayExampleActivity.java) - Using `replay` Operator * [ConcatExampleActivity](https://github.com/amitshekhariitbhu/RxJava2-Android-Samples/blob/master/app/src/main/java/com/rxjava2/android/samples/ConcatExampleActivity.java) - Using `concat` Operator * [MergeExampleActivity](https://github.com/amitshekhariitbhu/RxJava2-Android-Samples/blob/master/app/src/main/java/com/rxjava2/android/samples/MergeExampleActivity.java) - Using `merge` Operator +* [DeferExampleActivity](https://github.com/amitshekhariitbhu/RxJava2-Android-Samples/blob/master/app/src/main/java/com/rxjava2/android/samples/DeferExampleActivity.java) - Using `defer` Observable * [IntervalExampleActivity](https://github.com/amitshekhariitbhu/RxJava2-Android-Samples/blob/master/app/src/main/java/com/rxjava2/android/samples/IntervalExampleActivity.java) - Using `Interval` ### TODO diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9f5d05b..ca3c1a9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -67,6 +67,9 @@ + \ No newline at end of file diff --git a/app/src/main/java/com/rxjava2/android/samples/DeferExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/DeferExampleActivity.java new file mode 100644 index 0000000..d446bbc --- /dev/null +++ b/app/src/main/java/com/rxjava2/android/samples/DeferExampleActivity.java @@ -0,0 +1,87 @@ +package com.rxjava2.android.samples; + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.util.Log; +import android.view.View; +import android.widget.Button; +import android.widget.TextView; + +import com.rxjava2.android.samples.model.Car; + +import io.reactivex.Observable; +import io.reactivex.Observer; +import io.reactivex.disposables.Disposable; + +/** + * Created by amitshekhar on 30/08/16. + */ +public class DeferExampleActivity extends AppCompatActivity { + + private static final String TAG = SimpleExampleActivity.class.getSimpleName(); + Button btn; + TextView textView; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_example); + btn = (Button) findViewById(R.id.btn); + textView = (TextView) findViewById(R.id.textView); + + btn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + doSomeWork(); + } + }); + } + + /* + * Defer used for Deferring Observable code until subscription in RxJava + */ + private void doSomeWork() { + + Car car = new Car(); + + Observable brandDeferObservable = car.brandDeferObservable(); + + car.setBrand("BMW"); // Even if we are setting the brand after creating Observable + // we will get the brand as BMW. + // If we had not used defer, we would have got null as the brand. + + brandDeferObservable + .subscribe(getObserver()); + } + + private Observer getObserver() { + return new Observer() { + + @Override + public void onSubscribe(Disposable d) { + textView.append(" onSubscribe : isDisposed :" + d.isDisposed()); + Log.d(TAG, " onSubscribe : " + d.isDisposed()); + } + + @Override + public void onNext(String value) { + textView.append(" onNext : value : " + value); + Log.d(TAG, " onNext : value : " + value); + } + + @Override + public void onError(Throwable e) { + textView.append(" onError : " + e.getMessage()); + Log.d(TAG, " onError : " + e.getMessage()); + } + + @Override + public void onComplete() { + textView.append(" onComplete"); + Log.d(TAG, " onComplete"); + } + }; + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/rxjava2/android/samples/MainActivity.java b/app/src/main/java/com/rxjava2/android/samples/MainActivity.java index 464273d..a581b75 100644 --- a/app/src/main/java/com/rxjava2/android/samples/MainActivity.java +++ b/app/src/main/java/com/rxjava2/android/samples/MainActivity.java @@ -80,4 +80,8 @@ public void startConcatActivity(View view) { public void startMergeActivity(View view) { startActivity(new Intent(MainActivity.this, MergeExampleActivity.class)); } + + public void startDeferActivity(View view) { + startActivity(new Intent(MainActivity.this, DeferExampleActivity.class)); + } } diff --git a/app/src/main/java/com/rxjava2/android/samples/model/Car.java b/app/src/main/java/com/rxjava2/android/samples/model/Car.java new file mode 100644 index 0000000..e223650 --- /dev/null +++ b/app/src/main/java/com/rxjava2/android/samples/model/Car.java @@ -0,0 +1,28 @@ +package com.rxjava2.android.samples.model; + +import java.util.concurrent.Callable; + +import io.reactivex.Observable; +import io.reactivex.ObservableSource; + +/** + * Created by amitshekhar on 30/08/16. + */ +public class Car { + + private String brand; + + public void setBrand(String brand) { + this.brand = brand; + } + + public Observable brandDeferObservable() { + return Observable.defer(new Callable>() { + @Override + public ObservableSource call() throws Exception { + return Observable.just(brand); + } + }); + } + +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 3bfbaaf..25f1e06 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -133,5 +133,12 @@ android:text="@string/merge" android:textColor="@android:color/black" /> +