From e54815a07de9b8adec15ef24be6d76665e9ab0d6 Mon Sep 17 00:00:00 2001 From: AMIT SHEKHAR Date: Mon, 19 Jun 2017 23:45:45 +0530 Subject: [PATCH 01/55] Fix GitHub MD --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9ee2095..12a71f5 100644 --- a/README.md +++ b/README.md @@ -120,7 +120,7 @@ RxJava1 -> RxJava2 ### Another awesome library for debugging databases and shared preferences. * [Android Debug Database](https://github.com/amitshekhariitbhu/Android-Debug-Database) -###[Check out Mindorks awesome open source projects here](https://mindorks.com/open-source-projects) +### [Check out Mindorks awesome open source projects here](https://mindorks.com/open-source-projects) ### Contact - Let's become friend - [Twitter](https://twitter.com/amitiitbhu) From e54dcad4611c5e6b0e7f4207015f205fc7711298 Mon Sep 17 00:00:00 2001 From: amitshekhariitbhu Date: Fri, 7 Jul 2017 08:57:20 +0530 Subject: [PATCH 02/55] Bump RxJava2 Version to 2.1.1 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 8b820a1..62fe87b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -24,7 +24,7 @@ dependencies { testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:25.1.0' compile 'com.android.support:recyclerview-v7:25.1.0' - compile 'io.reactivex.rxjava2:rxjava:2.0.6' + compile 'io.reactivex.rxjava2:rxjava:2.1.1' compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'com.amitshekhar.android:rx2-android-networking:1.0.0' } From 74a6a33aca609453da646b3f05e9caebba7adb14 Mon Sep 17 00:00:00 2001 From: WeRockStar Date: Mon, 31 Jul 2017 14:36:25 +0700 Subject: [PATCH 03/55] Update README.md RxJava version --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 12a71f5..9d9710c 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ Users switching from 1.x to 2.x have to re-organize their imports, but carefully Add this in your build.gradle ```groovy -compile 'io.reactivex.rxjava2:rxjava:2.0.6' +compile 'io.reactivex.rxjava2:rxjava:2.1.1' ``` If you are using RxAndroid also, then add the following ```groovy From 84f1c3b8c49ab4ed9082025a97841a927105a73a Mon Sep 17 00:00:00 2001 From: AMIT SHEKHAR Date: Thu, 3 Aug 2017 19:52:00 +0530 Subject: [PATCH 04/55] Add RxJava Course Link --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 9d9710c..60fd7a2 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,8 @@ [![Open Source Love](https://badges.frapsoft.com/os/v1/open-source.svg?v=102)](https://opensource.org/licenses/Apache-2.0) [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/amitshekhariitbhu/RxJava2-Android-Samples/blob/master/LICENSE) +### [Get the complete RxJava Course Here](https://mindorks.com/course/learn-rxjava) + ## How to use RxJava 2 in Android Application ## How to migrate from RxJava 1.0 to RxJava 2.0 From fd135d548d96aff197c56baaff31bf138f89d4e5 Mon Sep 17 00:00:00 2001 From: AMIT SHEKHAR Date: Fri, 13 Oct 2017 09:26:38 +0530 Subject: [PATCH 05/55] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 60fd7a2..086b4a3 100644 --- a/README.md +++ b/README.md @@ -102,7 +102,7 @@ RxJava1 -> RxJava2 * [MergeExampleActivity](https://github.com/amitshekhariitbhu/RxJava2-Android-Samples/blob/master/app/src/main/java/com/rxjava2/android/samples/ui/operators/MergeExampleActivity.java) - Using `merge` Operator * [DeferExampleActivity](https://github.com/amitshekhariitbhu/RxJava2-Android-Samples/blob/master/app/src/main/java/com/rxjava2/android/samples/ui/operators/DeferExampleActivity.java) - Using `defer` Observable * [IntervalExampleActivity](https://github.com/amitshekhariitbhu/RxJava2-Android-Samples/blob/master/app/src/main/java/com/rxjava2/android/samples/ui/operators/IntervalExampleActivity.java) - Using `Interval` -* [RxBusActivity](https://github.com/amitshekhariitbhu/RxJava2-Android-Samples/blob/master/app/src/main/java/com/rxjava2/android/samples/ui/rxbus/RxBusActivity.java) - RxBus, RxJava2Bus, EventBus, RxEventBus +* [RxBusActivity](https://github.com/amitshekhariitbhu/RxJava2-Android-Samples/blob/master/app/src/main/java/com/rxjava2/android/samples/ui/rxbus/RxBusActivity.java) - RxBus, RxJava2Bus, EventBus, RxEventBus, [Blog for reference](https://blog.mindorks.com/implementing-eventbus-with-rxjava-rxbus-e6c940a94bd8) * [PaginationActivity](https://github.com/amitshekhariitbhu/RxJava2-Android-Samples/blob/master/app/src/main/java/com/rxjava2/android/samples/ui/pagination/PaginationActivity.java) - Pagination for loadMore in RecyclerView * [ComposeOperatorExampleActivity](https://github.com/amitshekhariitbhu/RxJava2-Android-Samples/blob/master/app/src/main/java/com/rxjava2/android/samples/ui/compose/ComposeOperatorExampleActivity.java) - Compose operator for reusable From 91e7afc11e370d40123f17d8777f377da7260e40 Mon Sep 17 00:00:00 2001 From: AMIT SHEKHAR Date: Sun, 15 Oct 2017 21:06:08 +0530 Subject: [PATCH 06/55] Add search example --- app/src/main/AndroidManifest.xml | 9 +- .../android/samples/ui/SelectionActivity.java | 6 ++ .../samples/ui/search/RxSearchObservable.java | 38 ++++++++ .../samples/ui/search/SearchActivity.java | 86 +++++++++++++++++++ app/src/main/res/layout/activity_search.xml | 26 ++++++ .../main/res/layout/activity_selection.xml | 7 ++ app/src/main/res/values/strings.xml | 2 + 7 files changed, 171 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/search/RxSearchObservable.java create mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/search/SearchActivity.java create mode 100644 app/src/main/res/layout/activity_search.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9b4c4f7..c61e200 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -30,6 +30,9 @@ + @@ -120,9 +123,9 @@ - + \ No newline at end of file diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/SelectionActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/SelectionActivity.java index e431b0a..d3c6082 100644 --- a/app/src/main/java/com/rxjava2/android/samples/ui/SelectionActivity.java +++ b/app/src/main/java/com/rxjava2/android/samples/ui/SelectionActivity.java @@ -11,6 +11,7 @@ import com.rxjava2.android.samples.ui.networking.NetworkingActivity; import com.rxjava2.android.samples.ui.pagination.PaginationActivity; import com.rxjava2.android.samples.ui.rxbus.RxBusActivity; +import com.rxjava2.android.samples.ui.search.SearchActivity; public class SelectionActivity extends AppCompatActivity { @@ -40,4 +41,9 @@ public void startPaginationActivity(View view) { public void startComposeOperator(View view) { startActivity(new Intent(SelectionActivity.this, ComposeOperatorExampleActivity.class)); } + + public void startSearchActivity(View view) { + startActivity(new Intent(SelectionActivity.this, SearchActivity.class)); + } + } diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/search/RxSearchObservable.java b/app/src/main/java/com/rxjava2/android/samples/ui/search/RxSearchObservable.java new file mode 100644 index 0000000..6360030 --- /dev/null +++ b/app/src/main/java/com/rxjava2/android/samples/ui/search/RxSearchObservable.java @@ -0,0 +1,38 @@ +package com.rxjava2.android.samples.ui.search; + +import android.widget.SearchView; + +import io.reactivex.Observable; +import io.reactivex.subjects.PublishSubject; + +/** + * Created by amitshekhar on 15/10/17. + */ + +public class RxSearchObservable { + + private RxSearchObservable() { + // no instance + } + + public static Observable fromView(SearchView searchView) { + + final PublishSubject subject = PublishSubject.create(); + + searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { + @Override + public boolean onQueryTextSubmit(String s) { + subject.onComplete(); + return true; + } + + @Override + public boolean onQueryTextChange(String text) { + subject.onNext(text); + return true; + } + }); + + return subject; + } +} diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/search/SearchActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/search/SearchActivity.java new file mode 100644 index 0000000..2382286 --- /dev/null +++ b/app/src/main/java/com/rxjava2/android/samples/ui/search/SearchActivity.java @@ -0,0 +1,86 @@ +package com.rxjava2.android.samples.ui.search; + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.widget.SearchView; +import android.widget.TextView; + +import com.rxjava2.android.samples.R; + +import java.util.concurrent.TimeUnit; + +import io.reactivex.Observable; +import io.reactivex.ObservableSource; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.annotations.NonNull; +import io.reactivex.functions.Consumer; +import io.reactivex.functions.Function; +import io.reactivex.functions.Predicate; +import io.reactivex.schedulers.Schedulers; + +/** + * Created by amitshekhar on 15/10/17. + */ + +public class SearchActivity extends AppCompatActivity { + + public static final String TAG = SearchActivity.class.getSimpleName(); + private SearchView searchView; + private TextView textViewResult; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_search); + searchView = (SearchView) findViewById(R.id.searchView); + textViewResult = (TextView) findViewById(R.id.textViewResult); + + setUpSearchObservable(); + } + + private void setUpSearchObservable() { + RxSearchObservable.fromView(searchView) + .debounce(300, TimeUnit.MILLISECONDS) + .filter(new Predicate() { + @Override + public boolean test(String text) throws Exception { + if (text.isEmpty()) { + textViewResult.setText(""); + return false; + } else { + return true; + } + } + }) + .distinctUntilChanged() + .switchMap(new Function>() { + @Override + public ObservableSource apply(String query) throws Exception { + return dataFromNetwork(query); + } + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Consumer() { + @Override + public void accept(String result) throws Exception { + textViewResult.setText(result); + } + }); + } + + /** + * Simulation of network data + */ + private Observable dataFromNetwork(final String query) { + return Observable.just(true) + .delay(2, TimeUnit.SECONDS) + .map(new Function() { + @Override + public String apply(@NonNull Boolean value) throws Exception { + return query; + } + }); + } + +} diff --git a/app/src/main/res/layout/activity_search.xml b/app/src/main/res/layout/activity_search.xml new file mode 100644 index 0000000..206b962 --- /dev/null +++ b/app/src/main/res/layout/activity_search.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_selection.xml b/app/src/main/res/layout/activity_selection.xml index 063101a..2c42930 100644 --- a/app/src/main/res/layout/activity_selection.xml +++ b/app/src/main/res/layout/activity_selection.xml @@ -50,5 +50,12 @@ android:text="@string/compose" android:textColor="@android:color/black" /> +