diff --git a/app/build.gradle b/app/build.gradle
index fe13a5b..642bb95 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,8 +1,10 @@
apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android-extensions'
+apply plugin: 'kotlin-android'
android {
compileSdkVersion 28
- buildToolsVersion "28.0.2"
+ buildToolsVersion "28.0.3"
defaultConfig {
applicationId "com.rxjava2.android.samples"
@@ -26,16 +28,23 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
testImplementation 'junit:junit:4.12'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'
- androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
- androidTestImplementation 'androidx.test:rules:1.1.0-alpha4'
- implementation 'androidx.appcompat:appcompat:1.0.0-rc02'
- implementation 'androidx.recyclerview:recyclerview:1.0.0-rc02'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0-beta01'
+ androidTestImplementation 'androidx.test:runner:1.2.0-beta01'
+ androidTestImplementation 'androidx.test:rules:1.2.0-beta01'
+ implementation 'androidx.appcompat:appcompat:1.1.0-alpha05'
+ implementation 'androidx.recyclerview:recyclerview:1.1.0-alpha05'
// RxJava2 Dependencies
- implementation 'io.reactivex.rxjava2:rxjava:2.2.2'
- implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
+ implementation 'io.reactivex.rxjava2:rxjava:2.2.7'
+ implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
// FastAndroidNetworking Dependency
implementation 'com.amitshekhar.android:rx2-android-networking:1.0.2'
+
+ // kotlin
+ implementation "androidx.core:core-ktx:1.0.2"
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+}
+repositories {
+ mavenCentral()
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 720343a..da23f81 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -5,8 +5,7 @@
-
-
-
@@ -45,99 +35,22 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/MyApplication.java b/app/src/main/java/com/rxjava2/android/samples/MyApplication.java
deleted file mode 100644
index 781cb30..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/MyApplication.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.rxjava2.android.samples;
-
-import android.app.Application;
-
-import com.rxjava2.android.samples.model.Events;
-import com.rxjava2.android.samples.ui.rxbus.RxBus;
-
-import java.util.concurrent.TimeUnit;
-
-import io.reactivex.Observable;
-import io.reactivex.functions.Consumer;
-
-/**
- * Created by threshold on 2017/1/12.
- */
-
-public class MyApplication extends Application {
-
- public static final String TAG = "MyApplication";
- private RxBus bus;
-
- @Override
- public void onCreate() {
- super.onCreate();
- bus = new RxBus();
- }
-
- public RxBus bus() {
- return bus;
- }
-
- public void sendAutoEvent() {
- Observable.timer(2, TimeUnit.SECONDS)
- .subscribe(new Consumer() {
- @Override
- public void accept(Long aLong) {
- bus.send(new Events.AutoEvent());
- }
- });
- }
-
-}
diff --git a/app/src/main/java/com/rxjava2/android/samples/model/ApiUser.java b/app/src/main/java/com/rxjava2/android/samples/model/ApiUser.java
deleted file mode 100644
index 09039ef..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/model/ApiUser.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.rxjava2.android.samples.model;
-
-/**
- * Created by amitshekhar on 27/08/16.
- */
-public class ApiUser {
- public long id;
- public String firstname;
- public String lastname;
-
- @Override
- public String toString() {
- return "ApiUser{" +
- "id=" + id +
- ", firstname='" + firstname + '\'' +
- ", lastname='" + lastname + '\'' +
- '}';
- }
-}
diff --git a/app/src/main/java/com/rxjava2/android/samples/model/ApiUser.kt b/app/src/main/java/com/rxjava2/android/samples/model/ApiUser.kt
new file mode 100644
index 0000000..939b190
--- /dev/null
+++ b/app/src/main/java/com/rxjava2/android/samples/model/ApiUser.kt
@@ -0,0 +1,8 @@
+package com.rxjava2.android.samples.model
+
+/**
+ * Created by amitshekhar on 27/08/16.
+ */
+data class ApiUser(var id: Long = 0L,
+ var firstname: String,
+ var lastname: String)
\ No newline at end of file
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
deleted file mode 100644
index a5ecffa..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/model/Car.java
+++ /dev/null
@@ -1,28 +0,0 @@
-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 extends String> call() {
- return Observable.just(brand);
- }
- });
- }
-
-}
diff --git a/app/src/main/java/com/rxjava2/android/samples/model/Events.java b/app/src/main/java/com/rxjava2/android/samples/model/Events.java
deleted file mode 100644
index d4541b4..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/model/Events.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.rxjava2.android.samples.model;
-
-/**
- * Created by amitshekhar on 06/02/17.
- */
-
-public class Events {
-
- private Events() {
-
- }
-
- public static class TapEvent {
-
- }
-
- public static class AutoEvent {
-
- }
-
-}
diff --git a/app/src/main/java/com/rxjava2/android/samples/model/User.java b/app/src/main/java/com/rxjava2/android/samples/model/User.java
deleted file mode 100644
index 6fb84ad..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/model/User.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.rxjava2.android.samples.model;
-
-/**
- * Created by amitshekhar on 27/08/16.
- */
-public class User {
- public long id;
- public String firstname;
- public String lastname;
- public boolean isFollowing;
-
- public User() {
- }
-
- public User(ApiUser apiUser) {
- this.id = apiUser.id;
- this.firstname = apiUser.firstname;
- this.lastname = apiUser.lastname;
- }
-
- @Override
- public String toString() {
- return "User{" +
- "id=" + id +
- ", firstname='" + firstname + '\'' +
- ", lastname='" + lastname + '\'' +
- ", isFollowing=" + isFollowing +
- '}';
- }
-
- @Override
- public int hashCode() {
- return (int) id + firstname.hashCode() + lastname.hashCode();
- }
-
- @Override
- public boolean equals(Object obj) {
- if (obj instanceof User) {
- User user = (User) obj;
-
- return this.id == user.id
- && this.firstname.equals(user.firstname)
- && this.lastname.equals(user.lastname);
- }
-
- return false;
- }
-}
diff --git a/app/src/main/java/com/rxjava2/android/samples/model/User.kt b/app/src/main/java/com/rxjava2/android/samples/model/User.kt
new file mode 100644
index 0000000..e04b22f
--- /dev/null
+++ b/app/src/main/java/com/rxjava2/android/samples/model/User.kt
@@ -0,0 +1,10 @@
+package com.rxjava2.android.samples.model
+
+/**
+ * Created by amitshekhar on 27/08/16.
+ */
+
+data class User(var id: Long = 0L,
+ var firstname: String,
+ var lastname: String,
+ var isFollowing: Boolean = false)
diff --git a/app/src/main/java/com/rxjava2/android/samples/model/UserDetail.java b/app/src/main/java/com/rxjava2/android/samples/model/UserDetail.java
deleted file mode 100644
index 1be734b..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/model/UserDetail.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.rxjava2.android.samples.model;
-
-/**
- * Created by amitshekhar on 04/02/17.
- */
-
-public class UserDetail {
-
- public long id;
- public String firstname;
- public String lastname;
-
- @Override
- public String toString() {
- return "UserDetail{" +
- "id=" + id +
- ", firstname='" + firstname + '\'' +
- ", lastname='" + lastname + '\'' +
- '}';
- }
-}
diff --git a/app/src/main/java/com/rxjava2/android/samples/model/UserDetail.kt b/app/src/main/java/com/rxjava2/android/samples/model/UserDetail.kt
new file mode 100644
index 0000000..bdb2e4e
--- /dev/null
+++ b/app/src/main/java/com/rxjava2/android/samples/model/UserDetail.kt
@@ -0,0 +1,9 @@
+package com.rxjava2.android.samples.model
+
+/**
+ * Created by amitshekhar on 04/02/17.
+ */
+
+data class UserDetail(var id: Long = 0L,
+ var firstname: String,
+ var lastname: String)
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
deleted file mode 100644
index 3986c9a..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/OperatorsActivity.java
+++ /dev/null
@@ -1,183 +0,0 @@
-package com.rxjava2.android.samples.ui;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.view.View;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.ui.operators.AsyncSubjectExampleActivity;
-import com.rxjava2.android.samples.ui.operators.BehaviorSubjectExampleActivity;
-import com.rxjava2.android.samples.ui.operators.BufferExampleActivity;
-import com.rxjava2.android.samples.ui.operators.CompletableObserverExampleActivity;
-import com.rxjava2.android.samples.ui.operators.ConcatExampleActivity;
-import com.rxjava2.android.samples.ui.operators.DebounceExampleActivity;
-import com.rxjava2.android.samples.ui.operators.DeferExampleActivity;
-import com.rxjava2.android.samples.ui.operators.DelayExampleActivity;
-import com.rxjava2.android.samples.ui.operators.DisposableExampleActivity;
-import com.rxjava2.android.samples.ui.operators.DistinctExampleActivity;
-import com.rxjava2.android.samples.ui.operators.FilterExampleActivity;
-import com.rxjava2.android.samples.ui.operators.FlowableExampleActivity;
-import com.rxjava2.android.samples.ui.operators.IntervalExampleActivity;
-import com.rxjava2.android.samples.ui.operators.LastOperatorExampleActivity;
-import com.rxjava2.android.samples.ui.operators.MapExampleActivity;
-import com.rxjava2.android.samples.ui.operators.MergeExampleActivity;
-import com.rxjava2.android.samples.ui.operators.PublishSubjectExampleActivity;
-import com.rxjava2.android.samples.ui.operators.ReduceExampleActivity;
-import com.rxjava2.android.samples.ui.operators.ReplayExampleActivity;
-import com.rxjava2.android.samples.ui.operators.ReplaySubjectExampleActivity;
-import com.rxjava2.android.samples.ui.operators.ScanExampleActivity;
-import com.rxjava2.android.samples.ui.operators.SimpleExampleActivity;
-import com.rxjava2.android.samples.ui.operators.SingleObserverExampleActivity;
-import com.rxjava2.android.samples.ui.operators.SkipExampleActivity;
-import com.rxjava2.android.samples.ui.operators.SwitchMapExampleActivity;
-import com.rxjava2.android.samples.ui.operators.TakeExampleActivity;
-import com.rxjava2.android.samples.ui.operators.TakeUntilExampleActivity;
-import com.rxjava2.android.samples.ui.operators.TakeWhileExampleActivity;
-import com.rxjava2.android.samples.ui.operators.ThrottleFirstExampleActivity;
-import com.rxjava2.android.samples.ui.operators.ThrottleLastExampleActivity;
-import com.rxjava2.android.samples.ui.operators.TimerExampleActivity;
-import com.rxjava2.android.samples.ui.operators.WindowExampleActivity;
-import com.rxjava2.android.samples.ui.operators.ZipExampleActivity;
-
-import androidx.appcompat.app.AppCompatActivity;
-
-public class OperatorsActivity extends AppCompatActivity {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_operators);
- }
-
- public void startSimpleActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, SimpleExampleActivity.class));
- }
-
- public void startMapActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, MapExampleActivity.class));
- }
-
- public void startZipActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, ZipExampleActivity.class));
- }
-
- public void startDisposableActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, DisposableExampleActivity.class));
- }
-
- public void startTakeActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, TakeExampleActivity.class));
- }
-
- public void startTimerActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, TimerExampleActivity.class));
- }
-
- public void startIntervalActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, IntervalExampleActivity.class));
- }
-
- public void startSingleObserverActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, SingleObserverExampleActivity.class));
- }
-
- public void startCompletableObserverActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, CompletableObserverExampleActivity.class));
- }
-
- public void startFlowableActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, FlowableExampleActivity.class));
- }
-
- public void startReduceActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, ReduceExampleActivity.class));
- }
-
- public void startBufferActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, BufferExampleActivity.class));
- }
-
- public void startFilterActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, FilterExampleActivity.class));
- }
-
- public void startSkipActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, SkipExampleActivity.class));
- }
-
- public void startScanActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, ScanExampleActivity.class));
- }
-
- public void startReplayActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, ReplayExampleActivity.class));
- }
-
- public void startConcatActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, ConcatExampleActivity.class));
- }
-
- public void startMergeActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, MergeExampleActivity.class));
- }
-
- public void startDeferActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, DeferExampleActivity.class));
- }
-
- public void startDistinctActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, DistinctExampleActivity.class));
- }
-
- public void startLastOperatorActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, LastOperatorExampleActivity.class));
- }
-
- public void startReplaySubjectActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, ReplaySubjectExampleActivity.class));
- }
-
- public void startPublishSubjectActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, PublishSubjectExampleActivity.class));
- }
-
- public void startBehaviorSubjectActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, BehaviorSubjectExampleActivity.class));
- }
-
- public void startAsyncSubjectActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, AsyncSubjectExampleActivity.class));
- }
-
- public void startThrottleFirstActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this,ThrottleFirstExampleActivity.class));
- }
-
- public void startThrottleLastActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, ThrottleLastExampleActivity.class));
- }
-
- public void startDebounceActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, DebounceExampleActivity.class));
- }
-
- public void startWindowActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this,WindowExampleActivity.class));
- }
-
- public void startDelayActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this,DelayExampleActivity.class));
- }
-
- public void startSwitchMapActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, SwitchMapExampleActivity.class));
- }
-
- public void startTakeWhileActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, TakeWhileExampleActivity.class));
- }
-
- public void startTakeUntilActivity(View view) {
- startActivity(new Intent(OperatorsActivity.this, TakeUntilExampleActivity.class));
- }
-}
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/OperatorsActivity.kt b/app/src/main/java/com/rxjava2/android/samples/ui/OperatorsActivity.kt
new file mode 100644
index 0000000..73e0203
--- /dev/null
+++ b/app/src/main/java/com/rxjava2/android/samples/ui/OperatorsActivity.kt
@@ -0,0 +1,49 @@
+package com.rxjava2.android.samples.ui
+
+import android.content.Intent
+import android.os.Bundle
+import android.view.View
+import androidx.appcompat.app.AppCompatActivity
+import com.rxjava2.android.samples.R
+import com.rxjava2.android.samples.ui.operators.*
+
+class OperatorsActivity : AppCompatActivity() {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_operators)
+ }
+
+ fun startSimpleActivity(view: View) {
+ startActivity(Intent(this@OperatorsActivity, SimpleExampleActivity::class.java))
+ }
+
+ fun startMapActivity(view: View) {
+ startActivity(Intent(this@OperatorsActivity, MapExampleActivity::class.java))
+ }
+
+ fun startZipActivity(view: View) {
+ startActivity(Intent(this@OperatorsActivity, ZipExampleActivity::class.java))
+ }
+
+ fun startTimerActivity(view: View) {
+ startActivity(Intent(this@OperatorsActivity, TimerExampleActivity::class.java))
+ }
+
+ fun startFilterActivity(view: View) {
+ startActivity(Intent(this@OperatorsActivity, FilterExampleActivity::class.java))
+ }
+
+ fun startConcatActivity(view: View) {
+ startActivity(Intent(this@OperatorsActivity, ConcatExampleActivity::class.java))
+ }
+
+ fun startMergeActivity(view: View) {
+ startActivity(Intent(this@OperatorsActivity, MergeExampleActivity::class.java))
+ }
+
+ fun startDelayActivity(view: View) {
+ startActivity(Intent(this@OperatorsActivity, DelayExampleActivity::class.java))
+ }
+
+}
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
deleted file mode 100644
index fd392dd..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/SelectionActivity.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.rxjava2.android.samples.ui;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.view.View;
-
-import com.rxjava2.android.samples.MyApplication;
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.ui.cache.CacheExampleActivity;
-import com.rxjava2.android.samples.ui.compose.ComposeOperatorExampleActivity;
-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;
-
-import androidx.appcompat.app.AppCompatActivity;
-
-public class SelectionActivity extends AppCompatActivity {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_selection);
- }
-
- public void startOperatorsActivity(View view) {
- startActivity(new Intent(SelectionActivity.this, OperatorsActivity.class));
- }
-
- public void startNetworkingActivity(View view) {
- startActivity(new Intent(SelectionActivity.this, NetworkingActivity.class));
- }
-
- public void startCacheActivity(View view) {
- startActivity(new Intent(SelectionActivity.this, CacheExampleActivity.class));
- }
-
- public void startRxBusActivity(View view) {
- ((MyApplication) getApplication()).sendAutoEvent();
- startActivity(new Intent(SelectionActivity.this, RxBusActivity.class));
- }
-
- public void startPaginationActivity(View view) {
- startActivity(new Intent(SelectionActivity.this, PaginationActivity.class));
- }
-
- 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/SelectionActivity.kt b/app/src/main/java/com/rxjava2/android/samples/ui/SelectionActivity.kt
new file mode 100644
index 0000000..bad3749
--- /dev/null
+++ b/app/src/main/java/com/rxjava2/android/samples/ui/SelectionActivity.kt
@@ -0,0 +1,32 @@
+package com.rxjava2.android.samples.ui
+
+import android.content.Intent
+import android.os.Bundle
+import android.view.View
+
+import androidx.appcompat.app.AppCompatActivity
+
+import com.rxjava2.android.samples.R
+import com.rxjava2.android.samples.ui.networking.NetworkingActivity
+import com.rxjava2.android.samples.ui.search.SearchActivity
+
+class SelectionActivity : AppCompatActivity() {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_selection)
+ }
+
+ fun startOperatorsActivity(view: View) {
+ startActivity(Intent(this@SelectionActivity, OperatorsActivity::class.java))
+ }
+
+ fun startNetworkingActivity(view: View) {
+ startActivity(Intent(this@SelectionActivity, NetworkingActivity::class.java))
+ }
+
+ fun startSearchActivity(view: View) {
+ startActivity(Intent(this@SelectionActivity, SearchActivity::class.java))
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/cache/CacheExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/cache/CacheExampleActivity.java
deleted file mode 100644
index bd98f63..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/cache/CacheExampleActivity.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package com.rxjava2.android.samples.ui.cache;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.ui.cache.model.Data;
-import com.rxjava2.android.samples.ui.cache.source.DataSource;
-import com.rxjava2.android.samples.ui.cache.source.DiskDataSource;
-import com.rxjava2.android.samples.ui.cache.source.MemoryDataSource;
-import com.rxjava2.android.samples.ui.cache.source.NetworkDataSource;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observable;
-import io.reactivex.Observer;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.schedulers.Schedulers;
-
-public class CacheExampleActivity extends AppCompatActivity {
-
- private static final String TAG = CacheExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
- DataSource dataSource;
-
- @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();
- }
- });
-
- dataSource = new DataSource(new MemoryDataSource(), new DiskDataSource(), new NetworkDataSource());
- }
-
- private void doSomeWork() {
-
- Observable memory = dataSource.getDataFromMemory();
- Observable disk = dataSource.getDataFromDisk();
- Observable network = dataSource.getDataFromNetwork();
-
- Observable.concat(memory, disk, network)
- .firstElement()
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .toObservable()
- .subscribe(getObserver());
- }
-
- private Observer getObserver() {
- return new Observer() {
-
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onNext(Data data) {
- textView.append(" onNext : " + data.source);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onNext : " + data.source);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onComplete");
- }
- };
- }
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/cache/model/Data.java b/app/src/main/java/com/rxjava2/android/samples/ui/cache/model/Data.java
deleted file mode 100644
index 477144e..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/cache/model/Data.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.rxjava2.android.samples.ui.cache.model;
-
-public class Data {
-
- public String source;
-
- @SuppressWarnings("CloneDoesntDeclareCloneNotSupportedException")
- @Override
- public Data clone() {
- return new Data();
- }
-}
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/cache/source/DataSource.java b/app/src/main/java/com/rxjava2/android/samples/ui/cache/source/DataSource.java
deleted file mode 100644
index 23403ff..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/cache/source/DataSource.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.rxjava2.android.samples.ui.cache.source;
-
-import com.rxjava2.android.samples.ui.cache.model.Data;
-
-import io.reactivex.Observable;
-
-/**
- * The DataSource to handle 3 data sources - memory, disk, network
- */
-public class DataSource {
-
- private final MemoryDataSource memoryDataSource;
- private final DiskDataSource diskDataSource;
- private final NetworkDataSource networkDataSource;
-
- public DataSource(MemoryDataSource memoryDataSource,
- DiskDataSource diskDataSource,
- NetworkDataSource networkDataSource) {
- this.memoryDataSource = memoryDataSource;
- this.diskDataSource = diskDataSource;
- this.networkDataSource = networkDataSource;
- }
-
- public Observable getDataFromMemory() {
- return memoryDataSource.getData();
- }
-
- public Observable getDataFromDisk() {
- return diskDataSource.getData().doOnNext(data ->
- memoryDataSource.cacheInMemory(data)
- );
- }
-
- public Observable getDataFromNetwork() {
- return networkDataSource.getData().doOnNext(data -> {
- diskDataSource.saveToDisk(data);
- memoryDataSource.cacheInMemory(data);
- });
- }
-
-}
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/cache/source/DiskDataSource.java b/app/src/main/java/com/rxjava2/android/samples/ui/cache/source/DiskDataSource.java
deleted file mode 100644
index 29f5bfa..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/cache/source/DiskDataSource.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.rxjava2.android.samples.ui.cache.source;
-
-import com.rxjava2.android.samples.ui.cache.model.Data;
-
-import io.reactivex.Observable;
-
-/**
- * Class to simulate Disk DataSource
- */
-public class DiskDataSource {
-
- private Data data;
-
- public Observable getData() {
- return Observable.create(emitter -> {
- if (data != null) {
- emitter.onNext(data);
- }
- emitter.onComplete();
- });
- }
-
- public void saveToDisk(Data data) {
- this.data = data.clone();
- this.data.source = "disk";
- }
-
-}
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/cache/source/MemoryDataSource.java b/app/src/main/java/com/rxjava2/android/samples/ui/cache/source/MemoryDataSource.java
deleted file mode 100644
index 2742f26..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/cache/source/MemoryDataSource.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.rxjava2.android.samples.ui.cache.source;
-
-import com.rxjava2.android.samples.ui.cache.model.Data;
-
-import io.reactivex.Observable;
-
-/**
- * Class to simulate InMemory DataSource
- */
-public class MemoryDataSource {
-
- private Data data;
-
- public Observable getData() {
- return Observable.create(emitter -> {
- if (data != null) {
- emitter.onNext(data);
- }
- emitter.onComplete();
- });
- }
-
- public void cacheInMemory(Data data) {
- this.data = data.clone();
- this.data.source = "memory";
- }
-
-}
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/cache/source/NetworkDataSource.java b/app/src/main/java/com/rxjava2/android/samples/ui/cache/source/NetworkDataSource.java
deleted file mode 100644
index d903fb0..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/cache/source/NetworkDataSource.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.rxjava2.android.samples.ui.cache.source;
-
-import com.rxjava2.android.samples.ui.cache.model.Data;
-
-import io.reactivex.Observable;
-
-
-/**
- * Class to simulate Network DataSource
- */
-public class NetworkDataSource {
-
- public Observable getData() {
- return Observable.create(emitter -> {
- Data data = new Data();
- data.source = "network";
- emitter.onNext(data);
- emitter.onComplete();
- });
- }
-
-}
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/compose/ComposeOperatorExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/compose/ComposeOperatorExampleActivity.java
deleted file mode 100644
index 89ab45b..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/compose/ComposeOperatorExampleActivity.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.rxjava2.android.samples.ui.compose;
-
-import android.os.Bundle;
-
-import com.rxjava2.android.samples.R;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Flowable;
-import io.reactivex.Observable;
-
-public class ComposeOperatorExampleActivity extends AppCompatActivity {
-
- private RxSchedulers schedulers = new RxSchedulers();
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_compose_operator_example);
-
- /*
- Compose for reusable code.
- */
- Observable.just(1, 2, 3, 4, 5)
- .compose(schedulers.applyObservableAsync())
- .subscribe(/* */);
-
- Flowable.just(1, 2, 3, 4, 5)
- .compose(schedulers.applyFlowableAsysnc())
- .subscribe(/* */);
-
- }
-}
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/compose/RxSchedulers.java b/app/src/main/java/com/rxjava2/android/samples/ui/compose/RxSchedulers.java
deleted file mode 100644
index 6be576c..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/compose/RxSchedulers.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package com.rxjava2.android.samples.ui.compose;
-
-import org.reactivestreams.Publisher;
-
-import io.reactivex.Flowable;
-import io.reactivex.FlowableTransformer;
-import io.reactivex.Observable;
-import io.reactivex.ObservableSource;
-import io.reactivex.ObservableTransformer;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.schedulers.Schedulers;
-
-/**
- * Created by werockstar on 5/19/2017.
- */
-
-public class RxSchedulers {
-
- public ObservableTransformer applyObservableAsync() {
- return new ObservableTransformer() {
- @Override
- public ObservableSource apply(Observable observable) {
- return observable.subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread());
- }
- };
- }
-
- public ObservableTransformer applyObservableCompute() {
- return new ObservableTransformer() {
- @Override
- public ObservableSource apply(Observable observable) {
- return observable.subscribeOn(Schedulers.computation())
- .observeOn(AndroidSchedulers.mainThread());
- }
- };
- }
-
- public ObservableTransformer applyObservableMainThread() {
- return new ObservableTransformer() {
- @Override
- public ObservableSource apply(Observable observable) {
- return observable.observeOn(AndroidSchedulers.mainThread());
- }
- };
- }
-
- public FlowableTransformer applyFlowableMainThread() {
- return new FlowableTransformer() {
- @Override
- public Publisher apply(Flowable flowable) {
- return flowable.observeOn(AndroidSchedulers.mainThread());
- }
- };
- }
-
- public FlowableTransformer applyFlowableAsysnc() {
- return new FlowableTransformer() {
- @Override
- public Publisher apply(Flowable flowable) {
- return flowable.observeOn(AndroidSchedulers.mainThread());
- }
- };
- }
-
- public FlowableTransformer applyFlowableCompute() {
- return new FlowableTransformer() {
- @Override
- public Publisher apply(Flowable flowable) {
- return flowable.observeOn(AndroidSchedulers.mainThread());
- }
- };
- }
-
-}
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/networking/NetworkingActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/networking/NetworkingActivity.java
deleted file mode 100644
index a425a96..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/networking/NetworkingActivity.java
+++ /dev/null
@@ -1,386 +0,0 @@
-package com.rxjava2.android.samples.ui.networking;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.util.Pair;
-import android.view.View;
-
-import com.rx2androidnetworking.Rx2AndroidNetworking;
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.model.ApiUser;
-import com.rxjava2.android.samples.model.User;
-import com.rxjava2.android.samples.model.UserDetail;
-import com.rxjava2.android.samples.utils.Utils;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observable;
-import io.reactivex.ObservableSource;
-import io.reactivex.Observer;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.functions.BiFunction;
-import io.reactivex.functions.Function;
-import io.reactivex.functions.Predicate;
-import io.reactivex.schedulers.Schedulers;
-
-/**
- * Created by amitshekhar on 04/02/17.
- */
-
-public class NetworkingActivity extends AppCompatActivity {
-
- public static final String TAG = NetworkingActivity.class.getSimpleName();
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_networking);
- }
-
- /**
- * Map Operator Example
- */
- public void map(View view) {
- Rx2AndroidNetworking.get("https://fierce-cove-29863.herokuapp.com/getAnUser/{userId}")
- .addPathParameter("userId", "1")
- .build()
- .getObjectObservable(ApiUser.class)
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .map(new Function() {
- @Override
- public User apply(ApiUser apiUser) {
- // here we get ApiUser from server
- User user = new User(apiUser);
- // then by converting, we are returning user
- return user;
- }
- })
- .subscribe(new Observer() {
- @Override
- public void onSubscribe(Disposable d) {
-
- }
-
- @Override
- public void onNext(User user) {
- Log.d(TAG, "user : " + user.toString());
- }
-
- @Override
- public void onError(Throwable e) {
- Utils.logError(TAG, e);
- }
-
- @Override
- public void onComplete() {
- Log.d(TAG, "onComplete");
- }
- });
- }
-
-
- /**
- * zip Operator Example
- */
-
- /**
- * This observable return the list of User who loves cricket
- */
- private Observable> getCricketFansObservable() {
- return Rx2AndroidNetworking.get("https://fierce-cove-29863.herokuapp.com/getAllCricketFans")
- .build()
- .getObjectListObservable(User.class);
- }
-
- /*
- * This observable return the list of User who loves Football
- */
- private Observable> getFootballFansObservable() {
- return Rx2AndroidNetworking.get("https://fierce-cove-29863.herokuapp.com/getAllFootballFans")
- .build()
- .getObjectListObservable(User.class);
- }
-
- /*
- * This do the complete magic, make both network call
- * and then returns the list of user who loves both
- * Using zip operator to get both response at a time
- */
- private void findUsersWhoLovesBoth() {
- // here we are using zip operator to combine both request
- Observable.zip(getCricketFansObservable(), getFootballFansObservable(),
- new BiFunction, List, List>() {
- @Override
- public List apply(List cricketFans, List footballFans) {
- List userWhoLovesBoth =
- filterUserWhoLovesBoth(cricketFans, footballFans);
- return userWhoLovesBoth;
- }
- })
- .subscribeOn(Schedulers.newThread())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer>() {
- @Override
- public void onSubscribe(Disposable d) {
-
- }
-
- @Override
- public void onNext(List users) {
- // do anything with user who loves both
- Log.d(TAG, "userList size : " + users.size());
- for (User user : users) {
- Log.d(TAG, "user : " + user.toString());
- }
- }
-
- @Override
- public void onError(Throwable e) {
- Utils.logError(TAG, e);
- }
-
- @Override
- public void onComplete() {
- Log.d(TAG, "onComplete");
- }
- });
- }
-
- private List filterUserWhoLovesBoth(List cricketFans, List footballFans) {
- List userWhoLovesBoth = new ArrayList<>();
-
- for (User footballFan : footballFans) {
- if (cricketFans.contains(footballFan)) {
- userWhoLovesBoth.add(footballFan);
- }
- }
-
- return userWhoLovesBoth;
- }
-
-
- public void zip(View view) {
- findUsersWhoLovesBoth();
- }
-
-
- /**
- * flatMap and filter Operators Example
- */
-
- private Observable> getAllMyFriendsObservable() {
- return Rx2AndroidNetworking.get("https://fierce-cove-29863.herokuapp.com/getAllFriends/{userId}")
- .addPathParameter("userId", "1")
- .build()
- .getObjectListObservable(User.class);
- }
-
- public void flatMapAndFilter(View view) {
- getAllMyFriendsObservable()
- .flatMap(new Function, ObservableSource>() { // flatMap - to return users one by one
- @Override
- public ObservableSource apply(List usersList) {
- return Observable.fromIterable(usersList); // returning user one by one from usersList.
- }
- })
- .filter(new Predicate() {
- @Override
- public boolean test(User user) {
- // filtering user who follows me.
- return user.isFollowing;
- }
- })
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer() {
- @Override
- public void onSubscribe(Disposable d) {
-
- }
-
- @Override
- public void onNext(User user) {
- // only the user who is following me comes here one by one
- Log.d(TAG, "user : " + user.toString());
- }
-
- @Override
- public void onError(Throwable e) {
- Utils.logError(TAG, e);
- }
-
- @Override
- public void onComplete() {
- Log.d(TAG, "onComplete");
- }
- });
- }
-
-
- /**
- * take Operator Example
- */
-
- public void take(View view) {
- getUserListObservable()
- .flatMap(new Function, ObservableSource>() { // flatMap - to return users one by one
- @Override
- public ObservableSource apply(List usersList) {
- return Observable.fromIterable(usersList); // returning user one by one from usersList.
- }
- })
- .take(4) // it will only emit first 4 users out of all
- .subscribeOn(Schedulers.newThread())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer() {
- @Override
- public void onSubscribe(Disposable d) {
-
- }
-
- @Override
- public void onNext(User user) {
- // // only four user comes here one by one
- Log.d(TAG, "user : " + user.toString());
- }
-
- @Override
- public void onError(Throwable e) {
- Utils.logError(TAG, e);
- }
-
- @Override
- public void onComplete() {
- Log.d(TAG, "onComplete");
- }
- });
- }
-
-
- /**
- * flatMap Operator Example
- */
-
- public void flatMap(View view) {
- getUserListObservable()
- .flatMap(new Function, ObservableSource>() { // flatMap - to return users one by one
- @Override
- public ObservableSource apply(List usersList) {
- return Observable.fromIterable(usersList); // returning user one by one from usersList.
- }
- })
- .flatMap(new Function>() {
- @Override
- public ObservableSource apply(User user) {
- // here we get the user one by one
- // and returns corresponding getUserDetailObservable
- // for that userId
- return getUserDetailObservable(user.id);
- }
- })
- .subscribeOn(Schedulers.newThread())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer() {
- @Override
- public void onSubscribe(Disposable d) {
-
- }
-
- @Override
- public void onError(Throwable e) {
- Utils.logError(TAG, e);
- }
-
- @Override
- public void onNext(UserDetail userDetail) {
- // do anything with userDetail
- Log.d(TAG, "userDetail : " + userDetail.toString());
- }
-
- @Override
- public void onComplete() {
- Log.d(TAG, "onComplete");
- }
- });
- }
-
- /**
- * flatMapWithZip Operator Example
- */
-
- private Observable> getUserListObservable() {
- return Rx2AndroidNetworking.get("https://fierce-cove-29863.herokuapp.com/getAllUsers/{pageNumber}")
- .addPathParameter("pageNumber", "0")
- .addQueryParameter("limit", "10")
- .build()
- .getObjectListObservable(User.class);
- }
-
- private Observable getUserDetailObservable(long id) {
- return Rx2AndroidNetworking.get("https://fierce-cove-29863.herokuapp.com/getAnUserDetail/{userId}")
- .addPathParameter("userId", String.valueOf(id))
- .build()
- .getObjectObservable(UserDetail.class);
- }
-
- public void flatMapWithZip(View view) {
- getUserListObservable()
- .flatMap(new Function, ObservableSource>() { // flatMap - to return users one by one
- @Override
- public ObservableSource apply(List usersList) {
- return Observable.fromIterable(usersList); // returning user one by one from usersList.
- }
- })
- .flatMap(new Function>>() {
- @Override
- public ObservableSource> apply(User user) {
- // here we get the user one by one and then we are zipping
- // two observable - one getUserDetailObservable (network call to get userDetail)
- // and another Observable.just(user) - just to emit user
- return Observable.zip(getUserDetailObservable(user.id),
- Observable.just(user),
- new BiFunction>() {
- @Override
- public Pair apply(UserDetail userDetail, User user) {
- // runs when network call completes
- // we get here userDetail for the corresponding user
- return new Pair<>(userDetail, user); // returning the pair(userDetail, user)
- }
- });
- }
- })
- .subscribeOn(Schedulers.newThread())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer>() {
- @Override
- public void onComplete() {
- // do something onCompleted
- Log.d(TAG, "onComplete");
- }
-
- @Override
- public void onError(Throwable e) {
- // handle error
- Utils.logError(TAG, e);
- }
-
- @Override
- public void onSubscribe(Disposable d) {
-
- }
-
- @Override
- public void onNext(Pair pair) {
- // here we are getting the userDetail for the corresponding user one by one
- UserDetail userDetail = pair.first;
- User user = pair.second;
- Log.d(TAG, "user : " + user.toString());
- Log.d(TAG, "userDetail : " + userDetail.toString());
- }
- });
- }
-}
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/networking/NetworkingActivity.kt b/app/src/main/java/com/rxjava2/android/samples/ui/networking/NetworkingActivity.kt
new file mode 100644
index 0000000..60c977e
--- /dev/null
+++ b/app/src/main/java/com/rxjava2/android/samples/ui/networking/NetworkingActivity.kt
@@ -0,0 +1,245 @@
+package com.rxjava2.android.samples.ui.networking
+
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.appcompat.app.AppCompatActivity
+import com.rx2androidnetworking.Rx2AndroidNetworking
+import com.rxjava2.android.samples.R
+import com.rxjava2.android.samples.model.ApiUser
+import com.rxjava2.android.samples.model.User
+import com.rxjava2.android.samples.model.UserDetail
+import com.rxjava2.android.samples.utils.Utils
+import io.reactivex.Observable
+import io.reactivex.Observer
+import io.reactivex.android.schedulers.AndroidSchedulers
+import io.reactivex.disposables.Disposable
+import io.reactivex.functions.BiFunction
+import io.reactivex.schedulers.Schedulers
+
+/**
+ * Created by amitshekhar on 04/02/17.
+ */
+
+class NetworkingActivity : AppCompatActivity() {
+
+ companion object {
+ const val TAG = "NetworkingActivity"
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_networking)
+ }
+
+ /**
+ * zip Operator Example
+ */
+
+ /**
+ * This observable return the list of User who loves cricket
+ */
+ private fun getCricketFansObservable(): Observable> {
+ return Rx2AndroidNetworking.get("https://fierce-cove-29863.herokuapp.com/getAllCricketFans")
+ .build()
+ .getObjectListObservable(User::class.java)
+ .subscribeOn(Schedulers.io())
+ }
+
+ /**
+ * This observable return the list of User who loves Football
+ */
+ private fun getFootballFansObservable(): Observable> {
+ return Rx2AndroidNetworking.get("https://fierce-cove-29863.herokuapp.com/getAllFootballFans")
+ .build()
+ .getObjectListObservable(User::class.java)
+ .subscribeOn(Schedulers.io())
+ }
+
+ /**
+ * flatMap and filter Operators Example
+ */
+ private fun getAllMyFriendsObservable(): Observable> {
+ return Rx2AndroidNetworking.get("https://fierce-cove-29863.herokuapp.com/getAllFriends/{userId}")
+ .addPathParameter("userId", "1")
+ .build()
+ .getObjectListObservable(User::class.java)
+ }
+
+ /**
+ * flatMapWithZip Operator Example
+ */
+ private fun getUserListObservable(): Observable> {
+ return Rx2AndroidNetworking.get("https://fierce-cove-29863.herokuapp.com/getAllUsers/{pageNumber}")
+ .addPathParameter("pageNumber", "0")
+ .addQueryParameter("limit", "10")
+ .build()
+ .getObjectListObservable(User::class.java)
+ }
+
+ /**
+ * Map Operator Example
+ */
+ fun map(view: View) {
+ Rx2AndroidNetworking.get("https://fierce-cove-29863.herokuapp.com/getAnUser/{userId}")
+ .addPathParameter("userId", "1")
+ .build()
+ .getObjectObservable(ApiUser::class.java)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .map { apiUser ->
+ // here we get ApiUser from server
+ // then by converting, we are returning user
+ User(apiUser.id, apiUser.firstname, apiUser.lastname)
+ }
+ .subscribe(object : Observer {
+
+ override fun onSubscribe(d: Disposable) {
+
+ }
+
+ override fun onNext(user: User) {
+ Log.d(TAG, "user : $user")
+ }
+
+ override fun onError(e: Throwable) {
+ Utils.logError(TAG, e)
+ }
+
+ override fun onComplete() {
+ Log.d(TAG, "onComplete")
+ }
+ })
+ }
+
+ /**
+ * This do the complete magic, make both network call
+ * and then returns the list of user who loves both
+ * Using zip operator to get both response at a time
+ */
+ private fun findUsersWhoLovesBoth() {
+ // here we are using zip operator to combine both request
+ Observable.zip(getCricketFansObservable(), getFootballFansObservable(),
+ BiFunction, List, List> { cricketFans, footballFans ->
+ return@BiFunction Utils.filterUserWhoLovesBoth(cricketFans, footballFans)
+ })
+ .subscribeOn(Schedulers.newThread())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(object : Observer> {
+
+ override fun onSubscribe(d: Disposable) {
+
+ }
+
+ override fun onNext(users: List) {
+ // do anything with user who loves both
+ Log.d(TAG, "userList size : " + users.size)
+ for (user in users) {
+ Log.d(TAG, "user : $user")
+ }
+ }
+
+ override fun onError(e: Throwable) {
+ Utils.logError(TAG, e)
+ }
+
+ override fun onComplete() {
+ Log.d(TAG, "onComplete")
+ }
+ })
+ }
+
+ fun zip(view: View) {
+ findUsersWhoLovesBoth()
+ }
+
+ fun flatMapAndFilter(view: View) {
+ getAllMyFriendsObservable()
+ .flatMap { usersList ->
+ // flatMap - to return users one by one
+ Observable.fromIterable(usersList) // returning user one by one from usersList.
+ }
+ .filter { user ->
+ // filtering user who follows me.
+ return@filter user.isFollowing
+ }
+ .toList()
+ .toObservable()
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(object : Observer> {
+
+ override fun onSubscribe(d: Disposable) {
+
+ }
+
+ override fun onNext(users: List) {
+ // only the user who is following will be in the list
+ Log.d(TAG, "userList size : " + users.size)
+ for (user in users) {
+ Log.d(TAG, "user : $user")
+ }
+ }
+
+ override fun onError(e: Throwable) {
+ Utils.logError(TAG, e)
+ }
+
+ override fun onComplete() {
+ Log.d(TAG, "onComplete")
+ }
+ })
+ }
+
+ /**
+ * flatMap Operator Example
+ */
+ fun flatMap(view: View) {
+ getUserListObservable()
+ .flatMap { usersList ->
+ // flatMap - to return users one by one
+ Observable.fromIterable(usersList) // returning user one by one from usersList.
+ }
+ .flatMap { user ->
+ // here we get the user one by one
+ // and returns corresponding getUserDetailObservable
+ // for that userId
+ getUserDetailObservable(user.id)
+ }
+ .toList()
+ .toObservable()
+ .subscribeOn(Schedulers.newThread())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(object : Observer> {
+
+ override fun onSubscribe(d: Disposable) {
+
+ }
+
+ override fun onError(e: Throwable) {
+ Utils.logError(TAG, e)
+ }
+
+ override fun onNext(userDetailList: List) {
+ // do anything with userDetail list
+
+ Log.d(TAG, "userDetailList size : " + userDetailList.size)
+ for (userDetail in userDetailList) {
+ Log.d(TAG, "userDetail : $userDetail")
+ }
+ }
+
+ override fun onComplete() {
+ Log.d(TAG, "onComplete")
+ }
+ })
+ }
+
+ private fun getUserDetailObservable(id: Long): Observable {
+ return Rx2AndroidNetworking.get("https://fierce-cove-29863.herokuapp.com/getAnUserDetail/{userId}")
+ .addPathParameter("userId", id.toString())
+ .build()
+ .getObjectObservable(UserDetail::class.java)
+ }
+
+}
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/AsyncSubjectExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/AsyncSubjectExampleActivity.java
deleted file mode 100644
index d2243a2..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/AsyncSubjectExampleActivity.java
+++ /dev/null
@@ -1,132 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observer;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.subjects.AsyncSubject;
-
-/**
- * Created by amitshekhar on 17/12/16.
- */
-
-public class AsyncSubjectExampleActivity extends AppCompatActivity {
-
- private static final String TAG = AsyncSubjectExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /* An AsyncSubject emits the last value (and only the last value) emitted by the source
- * Observable, and only after that source Observable completes. (If the source Observable
- * does not emit any values, the AsyncSubject also completes without emitting any values.)
- */
- private void doSomeWork() {
-
- AsyncSubject source = AsyncSubject.create();
-
- source.subscribe(getFirstObserver()); // it will emit only 4 and onComplete
-
- source.onNext(1);
- source.onNext(2);
- source.onNext(3);
-
- /*
- * it will emit 4 and onComplete for second observer also.
- */
- source.subscribe(getSecondObserver());
-
- source.onNext(4);
- source.onComplete();
-
- }
-
-
- private Observer getFirstObserver() {
- return new Observer() {
-
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " First onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onNext(Integer value) {
- textView.append(" First onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " First onNext value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" First onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " First onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" First onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " First onComplete");
- }
- };
- }
-
- private Observer getSecondObserver() {
- return new Observer() {
-
- @Override
- public void onSubscribe(Disposable d) {
- textView.append(" Second onSubscribe : isDisposed :" + d.isDisposed());
- Log.d(TAG, " Second onSubscribe : " + d.isDisposed());
- textView.append(AppConstant.LINE_SEPARATOR);
- }
-
- @Override
- public void onNext(Integer value) {
- textView.append(" Second onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " Second onNext value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" Second onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " Second onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" Second onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " Second onComplete");
- }
- };
- }
-
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/BehaviorSubjectExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/BehaviorSubjectExampleActivity.java
deleted file mode 100644
index 9eeadd0..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/BehaviorSubjectExampleActivity.java
+++ /dev/null
@@ -1,134 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observer;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.subjects.BehaviorSubject;
-
-/**
- * Created by amitshekhar on 17/12/16.
- */
-
-public class BehaviorSubjectExampleActivity extends AppCompatActivity {
-
- private static final String TAG = BehaviorSubjectExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /* When an observer subscribes to a BehaviorSubject, it begins by emitting the item most
- * recently emitted by the source Observable (or a seed/default value if none has yet been
- * emitted) and then continues to emit any other items emitted later by the source Observable(s).
- * It is different from Async Subject as async emits the last value (and only the last value)
- * but the Behavior Subject emits the last and the subsequent values also.
- */
- private void doSomeWork() {
-
- BehaviorSubject source = BehaviorSubject.create();
-
- source.subscribe(getFirstObserver()); // it will get 1, 2, 3, 4 and onComplete
-
- source.onNext(1);
- source.onNext(2);
- source.onNext(3);
-
- /*
- * it will emit 3(last emitted), 4 and onComplete for second observer also.
- */
- source.subscribe(getSecondObserver());
-
- source.onNext(4);
- source.onComplete();
-
- }
-
-
- private Observer getFirstObserver() {
- return new Observer() {
-
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " First onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onNext(Integer value) {
- textView.append(" First onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " First onNext value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" First onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " First onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" First onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " First onComplete");
- }
- };
- }
-
- private Observer getSecondObserver() {
- return new Observer() {
-
- @Override
- public void onSubscribe(Disposable d) {
- textView.append(" Second onSubscribe : isDisposed :" + d.isDisposed());
- Log.d(TAG, " Second onSubscribe : " + d.isDisposed());
- textView.append(AppConstant.LINE_SEPARATOR);
- }
-
- @Override
- public void onNext(Integer value) {
- textView.append(" Second onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " Second onNext value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" Second onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " Second onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" Second onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " Second onComplete");
- }
- };
- }
-
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/BufferExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/BufferExampleActivity.java
deleted file mode 100644
index 9171136..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/BufferExampleActivity.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import java.util.List;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observable;
-import io.reactivex.Observer;
-import io.reactivex.disposables.Disposable;
-
-/**
- * Created by amitshekhar on 27/08/16.
- */
-public class BufferExampleActivity extends AppCompatActivity {
-
- private static final String TAG = BufferExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /*
- * simple example using buffer operator - bundles all emitted values into a list
- */
- private void doSomeWork() {
-
- Observable> buffered = getObservable().buffer(3, 1);
-
- // 3 means, it takes max of three from its start index and create list
- // 1 means, it jumps one step every time
- // so the it gives the following list
- // 1 - one, two, three
- // 2 - two, three, four
- // 3 - three, four, five
- // 4 - four, five
- // 5 - five
-
- buffered.subscribe(getObserver());
- }
-
- private Observable getObservable() {
- return Observable.just("one", "two", "three", "four", "five");
- }
-
- private Observer> getObserver() {
- return new Observer>() {
-
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onNext(List stringList) {
- textView.append(" onNext size : " + stringList.size());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onNext : size :" + stringList.size());
- for (String value : stringList) {
- textView.append(" value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " : value :" + value);
- }
-
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onComplete");
- }
- };
- }
-
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/CompletableObserverExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/CompletableObserverExampleActivity.java
deleted file mode 100644
index 4ee612f..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/CompletableObserverExampleActivity.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import java.util.concurrent.TimeUnit;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Completable;
-import io.reactivex.CompletableObserver;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.schedulers.Schedulers;
-
-/**
- * Created by amitshekhar on 27/08/16.
- */
-public class CompletableObserverExampleActivity extends AppCompatActivity {
-
- private static final String TAG = CompletableObserverExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /*
- * simple example using CompletableObserver
- */
- private void doSomeWork() {
- Completable completable = Completable.timer(1000, TimeUnit.MILLISECONDS);
-
- completable
- .subscribeOn(Schedulers.io())
- // Be notified on the main thread
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(getCompletableObserver());
- }
-
- private CompletableObserver getCompletableObserver() {
- return new CompletableObserver() {
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onComplete() {
- textView.append(" onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onComplete");
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onError : " + e.getMessage());
- }
- };
- }
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ConcatExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/ConcatExampleActivity.java
deleted file mode 100644
index 8bb3e2b..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ConcatExampleActivity.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observable;
-import io.reactivex.Observer;
-import io.reactivex.disposables.Disposable;
-
-/**
- * Created by amitshekhar on 27/08/16.
- */
-public class ConcatExampleActivity extends AppCompatActivity {
-
- private static final String TAG = ConcatExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /*
- * Using concat operator to combine Observable : concat maintain
- * the order of Observable.
- * It will emit all the 7 values in order
- * here - first "A1", "A2", "A3", "A4" and then "B1", "B2", "B3"
- * first all from the first Observable and then
- * all from the second Observable all in order
- */
- private void doSomeWork() {
- 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.concat(aObservable, bObservable)
- .subscribe(getObserver());
- }
-
-
- private Observer getObserver() {
- return new Observer() {
-
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onNext(String value) {
- textView.append(" onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onNext : value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onComplete");
- }
- };
- }
-
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ConcatExampleActivity.kt b/app/src/main/java/com/rxjava2/android/samples/ui/operators/ConcatExampleActivity.kt
new file mode 100644
index 0000000..328739e
--- /dev/null
+++ b/app/src/main/java/com/rxjava2/android/samples/ui/operators/ConcatExampleActivity.kt
@@ -0,0 +1,79 @@
+package com.rxjava2.android.samples.ui.operators
+
+import android.os.Bundle
+import android.util.Log
+import android.widget.Button
+import android.widget.TextView
+import androidx.appcompat.app.AppCompatActivity
+import com.rxjava2.android.samples.R
+import com.rxjava2.android.samples.utils.AppConstant
+import io.reactivex.Observable
+import io.reactivex.Observer
+import io.reactivex.disposables.Disposable
+
+/**
+ * Created by amitshekhar on 27/08/16.
+ */
+class ConcatExampleActivity : AppCompatActivity() {
+
+ companion object {
+ private const val TAG = "ConcatExampleActivity"
+ }
+
+ private lateinit var btn: Button
+ private lateinit var textView: TextView
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_example)
+ btn = findViewById(R.id.btn)
+ textView = findViewById(R.id.textView)
+ btn.setOnClickListener {
+ doSomeWork()
+ }
+ }
+
+ /*
+ * Using concat operator to combine Observable : concat maintain
+ * the order of Observable.
+ * It will emit all the 7 values in order
+ * here - first "A1", "A2", "A3", "A4" and then "B1", "B2", "B3"
+ * first all from the first Observable and then
+ * all from the second Observable all in order
+ */
+ private fun doSomeWork() {
+ val observableA = Observable.fromArray("A1", "A2", "A3", "A4")
+ val observableB = Observable.fromArray("B1", "B2", "B3", "B4")
+
+ Observable.concat(observableA, observableB)
+ .subscribe(getObserver())
+ }
+
+ private fun getObserver(): Observer {
+ return object : Observer {
+
+ override fun onSubscribe(d: Disposable) {
+ Log.d(TAG, " onSubscribe : " + d.isDisposed)
+ }
+
+ override fun onNext(value: String) {
+ textView.append(" onNext : value : $value")
+ textView.append(AppConstant.LINE_SEPARATOR)
+ Log.d(TAG, " onNext : value : $value")
+ }
+
+ override fun onError(e: Throwable) {
+ textView.append(" onError : " + e.message)
+ textView.append(AppConstant.LINE_SEPARATOR)
+ Log.d(TAG, " onError : " + e.message)
+ }
+
+ override fun onComplete() {
+ textView.append(" onComplete")
+ textView.append(AppConstant.LINE_SEPARATOR)
+ Log.d(TAG, " onComplete")
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/DebounceExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/DebounceExampleActivity.java
deleted file mode 100644
index 7837381..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/DebounceExampleActivity.java
+++ /dev/null
@@ -1,116 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import java.util.concurrent.TimeUnit;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observable;
-import io.reactivex.ObservableEmitter;
-import io.reactivex.ObservableOnSubscribe;
-import io.reactivex.Observer;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.schedulers.Schedulers;
-
-/**
- * Created by amitshekhar on 22/12/16.
- */
-
-public class DebounceExampleActivity extends AppCompatActivity {
-
- private static final String TAG = DebounceExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /*
- * Using debounce() -> only emit an item from an Observable if a particular time-span has
- * passed without it emitting another item, so it will emit 2, 4, 5 as we have simulated it.
- */
- private void doSomeWork() {
- getObservable()
- .debounce(500, TimeUnit.MILLISECONDS)
- // Run on a background thread
- .subscribeOn(Schedulers.io())
- // Be notified on the main thread
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(getObserver());
- }
-
- private Observable getObservable() {
- return Observable.create(new ObservableOnSubscribe() {
- @Override
- public void subscribe(ObservableEmitter emitter) throws Exception {
- // send events with simulated time wait
- emitter.onNext(1); // skip
- Thread.sleep(400);
- emitter.onNext(2); // deliver
- Thread.sleep(505);
- emitter.onNext(3); // skip
- Thread.sleep(100);
- emitter.onNext(4); // deliver
- Thread.sleep(605);
- emitter.onNext(5); // deliver
- Thread.sleep(510);
- emitter.onComplete();
- }
- });
- }
-
- private Observer getObserver() {
- return new Observer() {
-
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onNext(Integer value) {
- textView.append(" onNext : ");
- textView.append(AppConstant.LINE_SEPARATOR);
- textView.append(" value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onNext ");
- Log.d(TAG, " value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onComplete");
- }
- };
- }
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/DeferExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/DeferExampleActivity.java
deleted file mode 100644
index 0e6249c..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/DeferExampleActivity.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.model.Car;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import androidx.appcompat.app.AppCompatActivity;
-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 = DeferExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- 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) {
- Log.d(TAG, " onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onNext(String value) {
- textView.append(" onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onNext : value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onComplete");
- }
- };
- }
-
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/DelayExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/DelayExampleActivity.java
deleted file mode 100644
index 212092c..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/DelayExampleActivity.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import java.util.concurrent.TimeUnit;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observable;
-import io.reactivex.Observer;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.schedulers.Schedulers;
-
-/**
- * Created by amitshekhar on 05/03/17.
- */
-
-public class DelayExampleActivity extends AppCompatActivity {
-
- private static final String TAG = DelayExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /*
- * simple example using delay to emit after 2 second
- */
- private void doSomeWork() {
- getObservable().delay(2, TimeUnit.SECONDS)
- // Run on a background thread
- .subscribeOn(Schedulers.io())
- // Be notified on the main thread
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(getObserver());
- }
-
- private Observable getObservable() {
- return Observable.just("Amit");
- }
-
- private Observer getObserver() {
- return new Observer() {
-
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onNext(String value) {
- textView.append(" onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onNext : value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onComplete");
- }
- };
- }
-
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/DelayExampleActivity.kt b/app/src/main/java/com/rxjava2/android/samples/ui/operators/DelayExampleActivity.kt
new file mode 100644
index 0000000..0029323
--- /dev/null
+++ b/app/src/main/java/com/rxjava2/android/samples/ui/operators/DelayExampleActivity.kt
@@ -0,0 +1,86 @@
+package com.rxjava2.android.samples.ui.operators
+
+import android.os.Bundle
+import android.util.Log
+import android.widget.Button
+import android.widget.TextView
+import androidx.appcompat.app.AppCompatActivity
+import com.rxjava2.android.samples.R
+import com.rxjava2.android.samples.utils.AppConstant
+import io.reactivex.Observable
+import io.reactivex.Observer
+import io.reactivex.android.schedulers.AndroidSchedulers
+import io.reactivex.disposables.Disposable
+import io.reactivex.schedulers.Schedulers
+import java.util.concurrent.TimeUnit
+
+/**
+ * Created by amitshekhar on 05/03/17.
+ */
+
+class DelayExampleActivity : AppCompatActivity() {
+
+ companion object {
+ private const val TAG = "DelayExampleActivity"
+ }
+
+ private lateinit var btn: Button
+ private lateinit var textView: TextView
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_example)
+ btn = findViewById(R.id.btn)
+ textView = findViewById(R.id.textView)
+
+ btn.setOnClickListener {
+ doSomeWork()
+ }
+ }
+
+ /*
+ * simple example using delay to emit after 2 second
+ */
+ private fun doSomeWork() {
+ getObservable()
+ .delay(2, TimeUnit.SECONDS)
+ // Run on a background thread
+ .subscribeOn(Schedulers.io())
+ // Be notified on the main thread
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(getObserver())
+ }
+
+
+ private fun getObservable(): Observable {
+ return Observable.just("Amit")
+ }
+
+ private fun getObserver(): Observer {
+ return object : Observer {
+
+ override fun onSubscribe(d: Disposable) {
+ Log.d(TAG, " onSubscribe : " + d.isDisposed)
+ }
+
+ override fun onNext(value: String) {
+ textView.append(" onNext : value : $value")
+ textView.append(AppConstant.LINE_SEPARATOR)
+ Log.d(TAG, " onNext : value : $value")
+ }
+
+ override fun onError(e: Throwable) {
+ textView.append(" onError : " + e.message)
+ textView.append(AppConstant.LINE_SEPARATOR)
+ Log.d(TAG, " onError : " + e.message)
+ }
+
+ override fun onComplete() {
+ textView.append(" onComplete")
+ textView.append(AppConstant.LINE_SEPARATOR)
+ Log.d(TAG, " onComplete")
+ }
+ }
+ }
+
+}
\ No newline at end of file
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
deleted file mode 100644
index 9e51b3c..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/DisposableExampleActivity.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.os.SystemClock;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import java.util.concurrent.Callable;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observable;
-import io.reactivex.ObservableSource;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.CompositeDisposable;
-import io.reactivex.observers.DisposableObserver;
-import io.reactivex.schedulers.Schedulers;
-
-/**
- * Created by amitshekhar on 27/08/16.
- */
-public class DisposableExampleActivity extends AppCompatActivity {
-
- private static final String TAG = DisposableExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
- private final CompositeDisposable disposables = new CompositeDisposable();
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- @Override
- protected void onDestroy() {
- super.onDestroy();
- disposables.clear(); // do not send event after activity has been destroyed
- }
-
- /*
- * Example to understand how to use disposables.
- * disposables is cleared in onDestroy of this activity.
- */
- void doSomeWork() {
- disposables.add(sampleObservable()
- // Run on a background thread
- .subscribeOn(Schedulers.io())
- // Be notified on the main thread
- .observeOn(AndroidSchedulers.mainThread())
- .subscribeWith(new DisposableObserver() {
- @Override
- public void onComplete() {
- textView.append(" onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onComplete");
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onError : " + e.getMessage());
- }
-
- @Override
- public void onNext(String value) {
- textView.append(" onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onNext value : " + value);
- }
- }));
- }
-
- static Observable sampleObservable() {
- return Observable.defer(new Callable>() {
- @Override
- public ObservableSource extends String> call() {
- // 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/DistinctExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/DistinctExampleActivity.java
deleted file mode 100644
index af2c0e3..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/DistinctExampleActivity.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import androidx.annotation.Nullable;
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observable;
-import io.reactivex.Observer;
-import io.reactivex.disposables.Disposable;
-
-/**
- * Created by techteam on 13/09/16.
- */
-public class DistinctExampleActivity extends AppCompatActivity {
-
- private static final String TAG = DistinctExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /*
- * distinct() suppresses duplicate items emitted by the source Observable.
- */
- private void doSomeWork() {
-
- getObservable()
- .distinct()
- .subscribe(getObserver());
- }
-
- private Observable getObservable() {
- return Observable.just(1, 2, 1, 1, 2, 3, 4, 6, 4);
- }
-
-
- private Observer getObserver() {
- return new Observer() {
-
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onNext(Integer value) {
- textView.append(" onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onNext value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- Log.d(TAG, " onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- Log.d(TAG, " onComplete");
- }
- };
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/FilterExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/FilterExampleActivity.java
deleted file mode 100644
index 35ddf9a..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/FilterExampleActivity.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observable;
-import io.reactivex.Observer;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.functions.Predicate;
-
-
-/**
- * Created by amitshekhar on 27/08/16.
- */
-public class FilterExampleActivity extends AppCompatActivity {
-
- private static final String TAG = FilterExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /*
- * simple example by using filter operator to emit only even value
- *
- */
- private void doSomeWork() {
- Observable.just(1, 2, 3, 4, 5, 6)
- .filter(new Predicate() {
- @Override
- public boolean test(Integer integer) {
- return integer % 2 == 0;
- }
- })
- .subscribe(getObserver());
- }
-
-
- private Observer getObserver() {
- return new Observer() {
-
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onNext(Integer value) {
- textView.append(" onNext : ");
- textView.append(AppConstant.LINE_SEPARATOR);
- textView.append(" value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onNext ");
- Log.d(TAG, " value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onComplete");
- }
- };
- }
-
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/FilterExampleActivity.kt b/app/src/main/java/com/rxjava2/android/samples/ui/operators/FilterExampleActivity.kt
new file mode 100644
index 0000000..7465d46
--- /dev/null
+++ b/app/src/main/java/com/rxjava2/android/samples/ui/operators/FilterExampleActivity.kt
@@ -0,0 +1,81 @@
+package com.rxjava2.android.samples.ui.operators
+
+import android.os.Bundle
+import android.util.Log
+import android.widget.Button
+import android.widget.TextView
+import androidx.appcompat.app.AppCompatActivity
+import com.rxjava2.android.samples.R
+import com.rxjava2.android.samples.utils.AppConstant
+import io.reactivex.Observable
+import io.reactivex.Observer
+import io.reactivex.disposables.Disposable
+
+
+/**
+ * Created by amitshekhar on 27/08/16.
+ */
+class FilterExampleActivity : AppCompatActivity() {
+
+ companion object {
+ private const val TAG = "FilterExampleActivity"
+ }
+
+ private lateinit var btn: Button
+ private lateinit var textView: TextView
+
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_example)
+ btn = findViewById(R.id.btn)
+ textView = findViewById(R.id.textView)
+
+ btn.setOnClickListener {
+ doSomeWork()
+ }
+ }
+
+ /*
+ * simple example by using filter operator to emit only even value
+ *
+ */
+ private fun doSomeWork() {
+ Observable.just(1, 2, 3, 4, 5, 6)
+ .filter { value ->
+ return@filter value % 2 == 0
+ }
+ .subscribe(getObserver())
+ }
+
+ private fun getObserver(): Observer {
+ return object : Observer {
+
+ override fun onSubscribe(d: Disposable) {
+ Log.d(TAG, " onSubscribe : " + d.isDisposed)
+ }
+
+ override fun onNext(value: Int) {
+ textView.append(" onNext : ")
+ textView.append(AppConstant.LINE_SEPARATOR)
+ textView.append(" value : $value")
+ textView.append(AppConstant.LINE_SEPARATOR)
+ Log.d(TAG, " onNext ")
+ Log.d(TAG, " value : $value")
+ }
+
+ override fun onError(e: Throwable) {
+ textView.append(" onError : " + e.message)
+ textView.append(AppConstant.LINE_SEPARATOR)
+ Log.d(TAG, " onError : " + e.message)
+ }
+
+ override fun onComplete() {
+ textView.append(" onComplete")
+ textView.append(AppConstant.LINE_SEPARATOR)
+ Log.d(TAG, " onComplete")
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/FlowableExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/FlowableExampleActivity.java
deleted file mode 100644
index 2bf727f..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/FlowableExampleActivity.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Flowable;
-import io.reactivex.SingleObserver;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.functions.BiFunction;
-
-/**
- * Created by amitshekhar on 27/08/16.
- */
-public class FlowableExampleActivity extends AppCompatActivity {
-
- private static final String TAG = FlowableExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /*
- * simple example using Flowable
- */
- private void doSomeWork() {
-
- Flowable observable = Flowable.just(1, 2, 3, 4);
-
- observable.reduce(50, new BiFunction() {
- @Override
- public Integer apply(Integer t1, Integer t2) {
- return t1 + t2;
- }
- }).subscribe(getObserver());
-
- }
-
- private SingleObserver getObserver() {
-
- return new SingleObserver() {
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onSuccess(Integer value) {
- textView.append(" onSuccess : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onSuccess : value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onError : " + e.getMessage());
- }
- };
- }
-}
\ No newline at end of file
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
deleted file mode 100644
index 36baeaf..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/IntervalExampleActivity.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import java.util.concurrent.TimeUnit;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observable;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.CompositeDisposable;
-import io.reactivex.observers.DisposableObserver;
-import io.reactivex.schedulers.Schedulers;
-
-/**
- * Created by amitshekhar on 27/08/16.
- */
-public class IntervalExampleActivity extends AppCompatActivity {
-
- private static final String TAG = IntervalExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
- private final CompositeDisposable disposables = new CompositeDisposable();
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- @Override
- protected void onDestroy() {
- super.onDestroy();
- disposables.clear(); // clearing it : do not emit after destroy
- }
-
- /*
- * simple example using interval to run task at an interval of 2 sec
- * which start immediately
- */
- private void doSomeWork() {
- disposables.add(getObservable()
- // Run on a background thread
- .subscribeOn(Schedulers.io())
- // Be notified on the main thread
- .observeOn(AndroidSchedulers.mainThread())
- .subscribeWith(getObserver()));
- }
-
- private Observable extends Long> getObservable() {
- return Observable.interval(0, 2, TimeUnit.SECONDS);
- }
-
- private DisposableObserver getObserver() {
- return new DisposableObserver() {
-
- @Override
- public void onNext(Long value) {
- textView.append(" onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onNext : value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onComplete");
- }
- };
- }
-
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/LastOperatorExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/LastOperatorExampleActivity.java
deleted file mode 100644
index 5cc3087..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/LastOperatorExampleActivity.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import androidx.annotation.Nullable;
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observable;
-import io.reactivex.SingleObserver;
-import io.reactivex.disposables.Disposable;
-
-/**
- * Created by techteam on 13/09/16.
- */
-public class LastOperatorExampleActivity extends AppCompatActivity {
-
- private static final String TAG = DistinctExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
-
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /*
- * last() emits only the last item emitted by the Observable.
- */
- private void doSomeWork() {
- getObservable().last("A1") // the default item ("A1") to emit if the source ObservableSource is empty
- .subscribe(getObserver());
- }
-
- private Observable getObservable() {
- return Observable.just("A1", "A2", "A3", "A4", "A5", "A6");
- }
-
- private SingleObserver getObserver() {
- return new SingleObserver() {
-
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onSuccess(String value) {
- textView.append(" onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onNext value : " + value);
- }
-
-
- @Override
- public void onError(Throwable e) {
- textView.append(" onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onError : " + e.getMessage());
- }
- };
- }
-}
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/MapExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/MapExampleActivity.java
deleted file mode 100644
index 29794ca..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/MapExampleActivity.java
+++ /dev/null
@@ -1,121 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.model.ApiUser;
-import com.rxjava2.android.samples.model.User;
-import com.rxjava2.android.samples.utils.AppConstant;
-import com.rxjava2.android.samples.utils.Utils;
-
-import java.util.List;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observable;
-import io.reactivex.ObservableEmitter;
-import io.reactivex.ObservableOnSubscribe;
-import io.reactivex.Observer;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.functions.Function;
-import io.reactivex.schedulers.Schedulers;
-
-/**
- * Created by amitshekhar on 27/08/16.
- */
-public class MapExampleActivity extends AppCompatActivity {
-
- private static final String TAG = MapExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /*
- * Here we are getting ApiUser Object from api server
- * then we are converting it into User Object because
- * may be our database support User Not ApiUser Object
- * Here we are using Map Operator to do that
- */
- private void doSomeWork() {
- getObservable()
- // Run on a background thread
- .subscribeOn(Schedulers.io())
- // Be notified on the main thread
- .observeOn(AndroidSchedulers.mainThread())
- .map(new Function, List>() {
-
- @Override
- public List apply(List apiUsers) {
- return Utils.convertApiUserListToUserList(apiUsers);
- }
- })
- .subscribe(getObserver());
- }
-
- private Observable> getObservable() {
- return Observable.create(new ObservableOnSubscribe>() {
- @Override
- public void subscribe(ObservableEmitter> e) {
- if (!e.isDisposed()) {
- e.onNext(Utils.getApiUserList());
- e.onComplete();
- }
- }
- });
- }
-
- private Observer> getObserver() {
- return new Observer>() {
-
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onNext(List userList) {
- textView.append(" onNext");
- textView.append(AppConstant.LINE_SEPARATOR);
- for (User user : userList) {
- textView.append(" firstname : " + user.firstname);
- textView.append(AppConstant.LINE_SEPARATOR);
- }
- Log.d(TAG, " onNext : " + userList.size());
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onComplete");
- }
- };
- }
-
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/MapExampleActivity.kt b/app/src/main/java/com/rxjava2/android/samples/ui/operators/MapExampleActivity.kt
new file mode 100644
index 0000000..efc4d15
--- /dev/null
+++ b/app/src/main/java/com/rxjava2/android/samples/ui/operators/MapExampleActivity.kt
@@ -0,0 +1,100 @@
+package com.rxjava2.android.samples.ui.operators
+
+import android.os.Bundle
+import android.util.Log
+import android.widget.Button
+import android.widget.TextView
+import androidx.appcompat.app.AppCompatActivity
+import com.rxjava2.android.samples.R
+import com.rxjava2.android.samples.model.ApiUser
+import com.rxjava2.android.samples.model.User
+import com.rxjava2.android.samples.utils.AppConstant
+import com.rxjava2.android.samples.utils.Utils
+import io.reactivex.Observable
+import io.reactivex.Observer
+import io.reactivex.android.schedulers.AndroidSchedulers
+import io.reactivex.disposables.Disposable
+import io.reactivex.schedulers.Schedulers
+
+/**
+ * Created by amitshekhar on 27/08/16.
+ */
+class MapExampleActivity : AppCompatActivity() {
+
+ companion object {
+ private const val TAG = "MapExampleActivity"
+ }
+
+ private lateinit var btn: Button
+ private lateinit var textView: TextView
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_example)
+ btn = findViewById(R.id.btn)
+ textView = findViewById(R.id.textView)
+
+ btn.setOnClickListener {
+ doSomeWork()
+ }
+ }
+
+ /*
+ * Here we are getting ApiUser Object from api server
+ * then we are converting it into User Object because
+ * may be our database support User Not ApiUser Object
+ * Here we are using Map Operator to do that
+ */
+ private fun doSomeWork() {
+ getObservable()
+ // Run on a background thread
+ .subscribeOn(Schedulers.io())
+ // Be notified on the main thread
+ .observeOn(AndroidSchedulers.mainThread())
+ .map { apiUsers ->
+ return@map Utils.convertApiUserListToUserList(apiUsers)
+ }
+ .subscribe(getObserver())
+ }
+
+ private fun getObservable(): Observable> {
+ return Observable.create { e ->
+ if (!e.isDisposed) {
+ e.onNext(Utils.getApiUserList())
+ e.onComplete()
+ }
+ }
+ }
+
+ private fun getObserver(): Observer> {
+ return object : Observer> {
+
+ override fun onSubscribe(d: Disposable) {
+ Log.d(TAG, " onSubscribe : " + d.isDisposed)
+ }
+
+ override fun onNext(userList: List) {
+ textView.append(" onNext")
+ textView.append(AppConstant.LINE_SEPARATOR)
+ for (user in userList) {
+ textView.append(" firstname : ${user.firstname}")
+ textView.append(AppConstant.LINE_SEPARATOR)
+ }
+ Log.d(TAG, " onNext : " + userList.size)
+ }
+
+ override fun onError(e: Throwable) {
+ textView.append(" onError : " + e.message)
+ textView.append(AppConstant.LINE_SEPARATOR)
+ Log.d(TAG, " onError : " + e.message)
+ }
+
+ override fun onComplete() {
+ textView.append(" onComplete")
+ textView.append(AppConstant.LINE_SEPARATOR)
+ Log.d(TAG, " onComplete")
+ }
+ }
+ }
+
+}
\ No newline at end of file
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
deleted file mode 100644
index 01551bf..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/MergeExampleActivity.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observable;
-import io.reactivex.Observer;
-import io.reactivex.disposables.Disposable;
-
-/**
- * Created by amitshekhar on 28/08/16.
- */
-public class MergeExampleActivity extends AppCompatActivity {
-
- private static final String TAG = MergeExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /*
- * 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
- */
- private void doSomeWork() {
- 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());
- }
-
-
- private Observer getObserver() {
- return new Observer() {
-
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onNext(String value) {
- textView.append(" onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onNext : value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onComplete");
- }
- };
- }
-
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/MergeExampleActivity.kt b/app/src/main/java/com/rxjava2/android/samples/ui/operators/MergeExampleActivity.kt
new file mode 100644
index 0000000..ecf7bff
--- /dev/null
+++ b/app/src/main/java/com/rxjava2/android/samples/ui/operators/MergeExampleActivity.kt
@@ -0,0 +1,78 @@
+package com.rxjava2.android.samples.ui.operators
+
+import android.os.Bundle
+import android.util.Log
+import android.widget.Button
+import android.widget.TextView
+import androidx.appcompat.app.AppCompatActivity
+import com.rxjava2.android.samples.R
+import com.rxjava2.android.samples.utils.AppConstant
+import io.reactivex.Observable
+import io.reactivex.Observer
+import io.reactivex.disposables.Disposable
+
+/**
+ * Created by amitshekhar on 28/08/16.
+ */
+class MergeExampleActivity : AppCompatActivity() {
+
+ companion object {
+ private const val TAG = "MergeExampleActivity"
+ }
+
+ private lateinit var btn: Button
+ private lateinit var textView: TextView
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_example)
+ btn = findViewById(R.id.btn)
+ textView = findViewById(R.id.textView)
+
+ btn.setOnClickListener {
+ doSomeWork()
+ }
+ }
+
+ /*
+ * 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
+ */
+ private fun doSomeWork() {
+ val observableA = Observable.fromArray("A1", "A2", "A3", "A4")
+ val observableB = Observable.fromArray("B1", "B2", "B3", "B4")
+
+ Observable.merge(observableA, observableB)
+ .subscribe(getObserver())
+ }
+
+ private fun getObserver(): Observer {
+ return object : Observer {
+
+ override fun onSubscribe(d: Disposable) {
+ Log.d(TAG, " onSubscribe : " + d.isDisposed)
+ }
+
+ override fun onNext(value: String) {
+ textView.append(" onNext : value : $value")
+ textView.append(AppConstant.LINE_SEPARATOR)
+ Log.d(TAG, " onNext : value : $value")
+ }
+
+ override fun onError(e: Throwable) {
+ textView.append(" onError : " + e.message)
+ textView.append(AppConstant.LINE_SEPARATOR)
+ Log.d(TAG, " onError : " + e.message)
+ }
+
+ override fun onComplete() {
+ textView.append(" onComplete")
+ textView.append(AppConstant.LINE_SEPARATOR)
+ Log.d(TAG, " onComplete")
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/PublishSubjectExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/PublishSubjectExampleActivity.java
deleted file mode 100644
index d03266b..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/PublishSubjectExampleActivity.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observer;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.subjects.PublishSubject;
-
-/**
- * Created by amitshekhar on 17/12/16.
- */
-
-public class PublishSubjectExampleActivity extends AppCompatActivity {
-
- private static final String TAG = PublishSubjectExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /* PublishSubject emits to an observer only those items that are emitted
- * by the source Observable, subsequent to the time of the subscription.
- */
- private void doSomeWork() {
-
- PublishSubject source = PublishSubject.create();
-
- source.subscribe(getFirstObserver()); // it will get 1, 2, 3, 4 and onComplete
-
- source.onNext(1);
- source.onNext(2);
- source.onNext(3);
-
- /*
- * it will emit 4 and onComplete for second observer also.
- */
- source.subscribe(getSecondObserver());
-
- source.onNext(4);
- source.onComplete();
-
- }
-
-
- private Observer getFirstObserver() {
- return new Observer() {
-
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " First onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onNext(Integer value) {
- textView.append(" First onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " First onNext value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" First onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " First onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" First onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " First onComplete");
- }
- };
- }
-
- private Observer getSecondObserver() {
- return new Observer() {
-
- @Override
- public void onSubscribe(Disposable d) {
- textView.append(" Second onSubscribe : isDisposed :" + d.isDisposed());
- Log.d(TAG, " Second onSubscribe : " + d.isDisposed());
- textView.append(AppConstant.LINE_SEPARATOR);
- }
-
- @Override
- public void onNext(Integer value) {
- textView.append(" Second onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " Second onNext value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" Second onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " Second onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" Second onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " Second onComplete");
- }
- };
- }
-
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ReduceExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/ReduceExampleActivity.java
deleted file mode 100644
index aa8aec1..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ReduceExampleActivity.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.MaybeObserver;
-import io.reactivex.Observable;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.functions.BiFunction;
-
-/**
- * Created by amitshekhar on 27/08/16.
- */
-public class ReduceExampleActivity extends AppCompatActivity {
-
- private static final String TAG = ReduceExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /*
- * simple example using reduce to add all the number
- */
- private void doSomeWork() {
- getObservable()
- .reduce(new BiFunction() {
- @Override
- public Integer apply(Integer t1, Integer t2) {
- return t1 + t2;
- }
- })
- .subscribe(getObserver());
- }
-
- private Observable getObservable() {
- return Observable.just(1, 2, 3, 4);
- }
-
- private MaybeObserver getObserver() {
- return new MaybeObserver() {
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onSuccess(Integer value) {
- textView.append(" onSuccess : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onSuccess : value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onComplete");
- }
- };
- }
-
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ReplayExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/ReplayExampleActivity.java
deleted file mode 100644
index c1ce888..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ReplayExampleActivity.java
+++ /dev/null
@@ -1,130 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observer;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.observables.ConnectableObservable;
-import io.reactivex.subjects.PublishSubject;
-
-/**
- * Created by amitshekhar on 27/08/16.
- */
-public class ReplayExampleActivity extends AppCompatActivity {
-
- private static final String TAG = ReplayExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /* Using replay operator, replay ensure that all observers see the same sequence
- * of emitted items, even if they subscribe after the Observable has begun emitting items
- */
- private void doSomeWork() {
-
- PublishSubject source = PublishSubject.create();
- ConnectableObservable connectableObservable = source.replay(3); // bufferSize = 3 to retain 3 values to replay
- connectableObservable.connect(); // connecting the connectableObservable
-
- connectableObservable.subscribe(getFirstObserver());
-
- source.onNext(1);
- source.onNext(2);
- source.onNext(3);
- source.onNext(4);
- source.onComplete();
-
- /*
- * it will emit 2, 3, 4 as (count = 3), retains the 3 values for replay
- */
- connectableObservable.subscribe(getSecondObserver());
-
- }
-
-
- private Observer getFirstObserver() {
- return new Observer() {
-
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " First onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onNext(Integer value) {
- textView.append(" First onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " First onNext value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" First onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " First onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" First onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " First onComplete");
- }
- };
- }
-
- private Observer getSecondObserver() {
- return new Observer() {
-
- @Override
- public void onSubscribe(Disposable d) {
- textView.append(" Second onSubscribe : isDisposed :" + d.isDisposed());
- Log.d(TAG, " Second onSubscribe : " + d.isDisposed());
- textView.append(AppConstant.LINE_SEPARATOR);
- }
-
- @Override
- public void onNext(Integer value) {
- textView.append(" Second onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " Second onNext value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" Second onError : " + e.getMessage());
- Log.d(TAG, " Second onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" Second onComplete");
- Log.d(TAG, " Second onComplete");
- }
- };
- }
-
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ReplaySubjectExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/ReplaySubjectExampleActivity.java
deleted file mode 100644
index 34bb5e4..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ReplaySubjectExampleActivity.java
+++ /dev/null
@@ -1,130 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observer;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.subjects.ReplaySubject;
-
-/**
- * Created by amitshekhar on 17/12/16.
- */
-
-public class ReplaySubjectExampleActivity extends AppCompatActivity {
-
- private static final String TAG = ReplaySubjectExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /* ReplaySubject emits to any observer all of the items that were emitted
- * by the source Observable, regardless of when the observer subscribes.
- */
- private void doSomeWork() {
-
- ReplaySubject source = ReplaySubject.create();
-
- source.subscribe(getFirstObserver()); // it will get 1, 2, 3, 4
-
- source.onNext(1);
- source.onNext(2);
- source.onNext(3);
- source.onNext(4);
- source.onComplete();
-
- /*
- * it will emit 1, 2, 3, 4 for second observer also as we have used replay
- */
- source.subscribe(getSecondObserver());
-
- }
-
-
- private Observer getFirstObserver() {
- return new Observer() {
-
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " First onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onNext(Integer value) {
- textView.append(" First onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " First onNext value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" First onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " First onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" First onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " First onComplete");
- }
- };
- }
-
- private Observer getSecondObserver() {
- return new Observer() {
-
- @Override
- public void onSubscribe(Disposable d) {
- textView.append(" Second onSubscribe : isDisposed :" + d.isDisposed());
- Log.d(TAG, " Second onSubscribe : " + d.isDisposed());
- textView.append(AppConstant.LINE_SEPARATOR);
- }
-
- @Override
- public void onNext(Integer value) {
- textView.append(" Second onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " Second onNext value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" Second onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " Second onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" Second onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " Second onComplete");
- }
- };
- }
-
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ScanExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/ScanExampleActivity.java
deleted file mode 100644
index 0c263c2..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ScanExampleActivity.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observable;
-import io.reactivex.Observer;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.functions.BiFunction;
-import io.reactivex.schedulers.Schedulers;
-
-public class ScanExampleActivity extends AppCompatActivity {
-
- private static final String TAG = ScanExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /* Using scan operator, it sends also the previous result */
- private void doSomeWork() {
- getObservable()
- // Run on a background thread
- .subscribeOn(Schedulers.io())
- // Be notified on the main thread
- .observeOn(AndroidSchedulers.mainThread())
- .scan(new BiFunction() {
- @Override
- public Integer apply(Integer int1, Integer int2) {
- return int1 + int2;
- }
- })
- .subscribe(getObserver());
- }
-
- private Observable getObservable() {
- return Observable.just(1, 2, 3, 4, 5);
- }
-
- private Observer getObserver() {
- return new Observer() {
-
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onNext(Integer value) {
- textView.append(" onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onNext value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onComplete");
- }
- };
- }
-
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/SimpleExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/SimpleExampleActivity.java
deleted file mode 100644
index 6329b1b..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/SimpleExampleActivity.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observable;
-import io.reactivex.Observer;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.schedulers.Schedulers;
-
-/**
- * Created by amitshekhar on 27/08/16.
- */
-public class SimpleExampleActivity 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 = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /*
- * simple example to emit two value one by one
- */
- private void doSomeWork() {
- getObservable()
- // Run on a background thread
- .subscribeOn(Schedulers.io())
- // Be notified on the main thread
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(getObserver());
- }
-
- private Observable getObservable() {
- return Observable.just("Cricket", "Football");
- }
-
- private Observer getObserver() {
- return new Observer() {
-
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onNext(String value) {
- textView.append(" onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onNext : value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onComplete");
- }
- };
- }
-
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/SimpleExampleActivity.kt b/app/src/main/java/com/rxjava2/android/samples/ui/operators/SimpleExampleActivity.kt
new file mode 100644
index 0000000..37842eb
--- /dev/null
+++ b/app/src/main/java/com/rxjava2/android/samples/ui/operators/SimpleExampleActivity.kt
@@ -0,0 +1,82 @@
+package com.rxjava2.android.samples.ui.operators
+
+import android.os.Bundle
+import android.util.Log
+import android.widget.Button
+import android.widget.TextView
+import androidx.appcompat.app.AppCompatActivity
+import com.rxjava2.android.samples.R
+import com.rxjava2.android.samples.utils.AppConstant
+import io.reactivex.Observable
+import io.reactivex.Observer
+import io.reactivex.android.schedulers.AndroidSchedulers
+import io.reactivex.disposables.Disposable
+import io.reactivex.schedulers.Schedulers
+
+/**
+ * Created by amitshekhar on 27/08/16.
+ */
+class SimpleExampleActivity : AppCompatActivity() {
+
+ companion object {
+ private const val TAG = "SimpleExampleActivity"
+ }
+
+ private lateinit var btn: Button
+ private lateinit var textView: TextView
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_example)
+ btn = findViewById(R.id.btn)
+ textView = findViewById(R.id.textView)
+
+ btn.setOnClickListener {
+ doSomeWork()
+ }
+ }
+
+ /*
+ * simple example to emit two value one by one
+ */
+ private fun doSomeWork() {
+ getObservable()
+ // Run on a background thread
+ .subscribeOn(Schedulers.io())
+ // Be notified on the main thread
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(getObserver())
+ }
+
+ private fun getObservable(): Observable {
+ return Observable.just("Cricket", "Football")
+ }
+
+ private fun getObserver(): Observer {
+ return object : Observer {
+
+ override fun onSubscribe(d: Disposable) {
+ Log.d(TAG, " onSubscribe : " + d.isDisposed)
+ }
+
+ override fun onNext(value: String) {
+ textView.append(" onNext : value : $value")
+ textView.append(AppConstant.LINE_SEPARATOR)
+ Log.d(TAG, " onNext : value : $value")
+ }
+
+ override fun onError(e: Throwable) {
+ textView.append(" onError : " + e.message)
+ textView.append(AppConstant.LINE_SEPARATOR)
+ Log.d(TAG, " onError : " + e.message)
+ }
+
+ override fun onComplete() {
+ textView.append(" onComplete")
+ textView.append(AppConstant.LINE_SEPARATOR)
+ Log.d(TAG, " onComplete")
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/SingleObserverExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/SingleObserverExampleActivity.java
deleted file mode 100644
index 403f070..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/SingleObserverExampleActivity.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Single;
-import io.reactivex.SingleObserver;
-import io.reactivex.disposables.Disposable;
-
-/**
- * Created by amitshekhar on 27/08/16.
- */
-public class SingleObserverExampleActivity extends AppCompatActivity {
-
- private static final String TAG = SingleObserverExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /*
- * simple example using SingleObserver
- */
- private void doSomeWork() {
- Single.just("Amit")
- .subscribe(getSingleObserver());
- }
-
- private SingleObserver getSingleObserver() {
- return new SingleObserver() {
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onSuccess(String value) {
- textView.append(" onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onNext value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onError : " + e.getMessage());
- }
- };
- }
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/SkipExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/SkipExampleActivity.java
deleted file mode 100644
index 06ad8eb..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/SkipExampleActivity.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observable;
-import io.reactivex.Observer;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.schedulers.Schedulers;
-
-/**
- * Created by amitshekhar on 27/08/16.
- */
-public class SkipExampleActivity extends AppCompatActivity {
-
- private static final String TAG = SkipExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /* Using skip operator, it will not emit
- * the first 2 values.
- */
- private void doSomeWork() {
- getObservable()
- // Run on a background thread
- .subscribeOn(Schedulers.io())
- // Be notified on the main thread
- .observeOn(AndroidSchedulers.mainThread())
- .skip(2)
- .subscribe(getObserver());
- }
-
- private Observable getObservable() {
- return Observable.just(1, 2, 3, 4, 5);
- }
-
- private Observer getObserver() {
- return new Observer() {
-
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onNext(Integer value) {
- textView.append(" onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onNext value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onComplete");
- }
- };
- }
-
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/SwitchMapExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/SwitchMapExampleActivity.java
deleted file mode 100644
index d787bc5..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/SwitchMapExampleActivity.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import java.util.Random;
-import java.util.concurrent.TimeUnit;
-
-import androidx.annotation.Nullable;
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observable;
-import io.reactivex.ObservableSource;
-import io.reactivex.Observer;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.functions.Function;
-import io.reactivex.schedulers.Schedulers;
-
-/**
- * Created by thanhtuan on 26/04/18.
- */
-public class SwitchMapExampleActivity extends AppCompatActivity {
-
- private static final String TAG = SwitchMapExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
-
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /* whenever a new item is emitted by the source Observable, it will unsubscribe to and stop
- * mirroring the Observable that was generated from the previously-emitted item,
- * and begin only mirroring the current one.
- *
- * Result: 5x
- */
- private void doSomeWork() {
- getObservable()
- .switchMap(new Function>() {
- @Override
- public ObservableSource apply(Integer integer) {
- int delay = new Random().nextInt(2);
-
- return Observable.just(integer.toString() + "x")
- .delay(delay, TimeUnit.SECONDS, Schedulers.io());
- }
- })
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(getObserver());
- }
-
- private Observable getObservable() {
- return Observable.just(1, 2, 3, 4, 5);
- }
-
- private Observer getObserver() {
- return new Observer() {
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onNext(String value) {
- textView.append(" onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onNext value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onComplete");
- }
- };
- }
-}
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeExampleActivity.java
deleted file mode 100644
index 74b4b9f..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeExampleActivity.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observable;
-import io.reactivex.Observer;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.schedulers.Schedulers;
-
-/**
- * Created by amitshekhar on 27/08/16.
- */
-public class TakeExampleActivity extends AppCompatActivity {
-
- private static final String TAG = TakeExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /* Using take operator, it only emits
- * required number of values. here only 3 out of 5
- */
- private void doSomeWork() {
- getObservable()
- // Run on a background thread
- .subscribeOn(Schedulers.io())
- // Be notified on the main thread
- .observeOn(AndroidSchedulers.mainThread())
- .take(3)
- .subscribe(getObserver());
- }
-
- private Observable getObservable() {
- return Observable.just(1, 2, 3, 4, 5);
- }
-
- private Observer getObserver() {
- return new Observer() {
-
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onNext(Integer value) {
- textView.append(" onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onNext value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onComplete");
- }
- };
- }
-
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeOperatorBaseActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeOperatorBaseActivity.java
deleted file mode 100644
index a078b5b..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeOperatorBaseActivity.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-import com.rxjava2.android.samples.utils.ObserverAdapter;
-
-import androidx.annotation.Nullable;
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observable;
-import io.reactivex.Observer;
-import io.reactivex.disposables.Disposable;
-
-public abstract class TakeOperatorBaseActivity extends AppCompatActivity {
- private static final String TAG = TakeWhileExampleActivity.class.getSimpleName();
-
- private Button btn;
-
- protected TextView textView;
-
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(view -> {
- doSomeWork();
- });
- }
-
- /**
- * Need to be override based on the operation.
- */
- abstract void doSomeWork();
-
- protected Observer super String> getObserver() {
- return new ObserverAdapter() {
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onNext(String value) {
- textView.append(" onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onNext value : " + value);
- }
-
- @Override
- public void onComplete() {
- textView.append(" onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onComplete");
- }
- };
- }
-
-
- protected Observable getStringObservable() {
- return Observable.just("Alpha", "Beta", "Cupcake", "Doughnut", "Eclair", "Froyo", "GingerBread",
- "Honeycomb", "Ice cream sandwich");
- }
-
-}
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeUntilExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeUntilExampleActivity.java
deleted file mode 100644
index e0313d0..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeUntilExampleActivity.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.util.Log;
-
-import com.rxjava2.android.samples.utils.AppConstant;
-import com.rxjava2.android.samples.utils.ObserverAdapter;
-
-import java.util.concurrent.TimeUnit;
-
-import io.reactivex.Observable;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.functions.BiFunction;
-
-public class TakeUntilExampleActivity extends TakeOperatorBaseActivity {
-
- private static final String TAG = TakeWhileExampleActivity.class.getSimpleName();
-
- @Override
- protected void doSomeWork() {
- Observable timerObservable = Observable.timer(5, TimeUnit.SECONDS);
- timerObservable.subscribe(new ObserverAdapter() {
- @Override
- public void onComplete() {
- String print = " Timer completed";
- textView.append(print);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, print);
- }
- });
-
- getStringObservable()
- //Delay item emission by one second
- .zipWith(Observable.interval(0, 1, TimeUnit.SECONDS), new BiFunction() {
- @Override
- public String apply(String s, Long aLong) throws Exception {
- return s;
- }
- })
- //Will receive the items from Strings observable until timerObservable doesn't start emitting data.
- .takeUntil(timerObservable)
- //We need to observe on MainThread because delay works on background thread to avoid UI blocking.
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(getObserver());
- }
-}
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeWhileExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeWhileExampleActivity.java
deleted file mode 100644
index 213b779..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeWhileExampleActivity.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import java.util.concurrent.TimeUnit;
-
-import io.reactivex.Observable;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.functions.BiFunction;
-import io.reactivex.functions.Predicate;
-
-public class TakeWhileExampleActivity extends TakeOperatorBaseActivity {
-
- private static final String TAG = TakeWhileExampleActivity.class.getSimpleName();
-
- @Override
- protected void doSomeWork() {
- getStringObservable()
- //Delay item emission by one second
- .zipWith(Observable.interval(0, 1, TimeUnit.SECONDS), new BiFunction() {
- @Override
- public String apply(String s, Long aLong) throws Exception {
- return s;
- }
- })
- //Take the items until the condition is met.
- .takeWhile(new Predicate() {
- @Override
- public boolean test(String s) throws Exception {
- return !s.toLowerCase().contains("honey");
- }
- })
- //We need to observe on MainThread because delay works on background thread to avoid UI blocking.
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(getObserver());
- }
-}
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ThrottleFirstExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/ThrottleFirstExampleActivity.java
deleted file mode 100644
index a009cc1..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ThrottleFirstExampleActivity.java
+++ /dev/null
@@ -1,121 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import java.util.concurrent.TimeUnit;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observable;
-import io.reactivex.ObservableEmitter;
-import io.reactivex.ObservableOnSubscribe;
-import io.reactivex.Observer;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.schedulers.Schedulers;
-
-
-/**
- * Created by threshold on 2017/1/11.
- */
-
-public class ThrottleFirstExampleActivity extends AppCompatActivity {
-
- private static final String TAG = ThrottleFirstExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /*
- * Using throttleFirst() -> if the source Observable has emitted no items since
- * the last time it was sampled, the Observable that results from this operator
- * will emit no item for that sampling period.
- */
- private void doSomeWork() {
- getObservable()
- .throttleFirst(500, TimeUnit.MILLISECONDS)
- // Run on a background thread
- .subscribeOn(Schedulers.io())
- // Be notified on the main thread
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(getObserver());
- }
-
- private Observable getObservable() {
- return Observable.create(new ObservableOnSubscribe() {
- @Override
- public void subscribe(ObservableEmitter emitter) throws Exception {
- // send events with simulated time wait
- Thread.sleep(0);
- emitter.onNext(1); // deliver
- emitter.onNext(2); // skip
- Thread.sleep(505);
- emitter.onNext(3); // deliver
- Thread.sleep(99);
- emitter.onNext(4); // skip
- Thread.sleep(100);
- emitter.onNext(5); // skip
- emitter.onNext(6); // skip
- Thread.sleep(305);
- emitter.onNext(7); // deliver
- Thread.sleep(510);
- emitter.onComplete();
- }
- });
- }
-
- private Observer getObserver() {
- return new Observer() {
-
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onNext(Integer value) {
- textView.append(" onNext : ");
- textView.append(AppConstant.LINE_SEPARATOR);
- textView.append(" value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onNext ");
- Log.d(TAG, " value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onComplete");
- }
- };
- }
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ThrottleLastExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/ThrottleLastExampleActivity.java
deleted file mode 100644
index b48e208..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ThrottleLastExampleActivity.java
+++ /dev/null
@@ -1,120 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import java.util.concurrent.TimeUnit;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observable;
-import io.reactivex.ObservableEmitter;
-import io.reactivex.ObservableOnSubscribe;
-import io.reactivex.Observer;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.schedulers.Schedulers;
-
-/**
- * Created by amitshekhar on 22/12/16.
- */
-
-public class ThrottleLastExampleActivity extends AppCompatActivity {
-
- private static final String TAG = ThrottleLastExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /*
- * Using throttleLast() -> emit the most recent items emitted by an Observable within
- * periodic time intervals, so here it will emit 2, 6 and 7 as we have simulated it to be the
- * last the element in the interval of 500 millis
- */
- private void doSomeWork() {
- getObservable()
- .throttleLast(500, TimeUnit.MILLISECONDS)
- // Run on a background thread
- .subscribeOn(Schedulers.io())
- // Be notified on the main thread
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(getObserver());
- }
-
- private Observable getObservable() {
- return Observable.create(new ObservableOnSubscribe() {
- @Override
- public void subscribe(ObservableEmitter emitter) throws Exception {
- // send events with simulated time wait
- Thread.sleep(0);
- emitter.onNext(1); // skip
- emitter.onNext(2); // deliver
- Thread.sleep(505);
- emitter.onNext(3); // skip
- Thread.sleep(99);
- emitter.onNext(4); // skip
- Thread.sleep(100);
- emitter.onNext(5); // skip
- emitter.onNext(6); // deliver
- Thread.sleep(305);
- emitter.onNext(7); // deliver
- Thread.sleep(510);
- emitter.onComplete();
- }
- });
- }
-
- private Observer getObserver() {
- return new Observer() {
-
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onNext(Integer value) {
- textView.append(" onNext : ");
- textView.append(AppConstant.LINE_SEPARATOR);
- textView.append(" value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onNext ");
- Log.d(TAG, " value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onComplete");
- }
- };
- }
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/TimerExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/TimerExampleActivity.java
deleted file mode 100644
index cbfa1e1..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/TimerExampleActivity.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import java.util.concurrent.TimeUnit;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observable;
-import io.reactivex.Observer;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.schedulers.Schedulers;
-
-/**
- * Created by amitshekhar on 27/08/16.
- */
-public class TimerExampleActivity extends AppCompatActivity {
-
- private static final String TAG = TimerExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /*
- * simple example using timer to do something after 2 second
- */
- private void doSomeWork() {
- getObservable()
- // Run on a background thread
- .subscribeOn(Schedulers.io())
- // Be notified on the main thread
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(getObserver());
- }
-
- private Observable extends Long> getObservable() {
- return Observable.timer(2, TimeUnit.SECONDS);
- }
-
- private Observer getObserver() {
- return new Observer() {
-
- @Override
- public void onSubscribe(Disposable d) {
- Log.d(TAG, " onSubscribe : " + d.isDisposed());
- }
-
- @Override
- public void onNext(Long value) {
- textView.append(" onNext : value : " + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onNext : value : " + value);
- }
-
- @Override
- public void onError(Throwable e) {
- textView.append(" onError : " + e.getMessage());
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onError : " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- textView.append(" onComplete");
- textView.append(AppConstant.LINE_SEPARATOR);
- Log.d(TAG, " onComplete");
- }
- };
- }
-
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/TimerExampleActivity.kt b/app/src/main/java/com/rxjava2/android/samples/ui/operators/TimerExampleActivity.kt
new file mode 100644
index 0000000..dd810a8
--- /dev/null
+++ b/app/src/main/java/com/rxjava2/android/samples/ui/operators/TimerExampleActivity.kt
@@ -0,0 +1,84 @@
+package com.rxjava2.android.samples.ui.operators
+
+import android.os.Bundle
+import android.util.Log
+import android.widget.Button
+import android.widget.TextView
+import androidx.appcompat.app.AppCompatActivity
+import com.rxjava2.android.samples.R
+import com.rxjava2.android.samples.utils.AppConstant
+import io.reactivex.Observable
+import io.reactivex.Observer
+import io.reactivex.android.schedulers.AndroidSchedulers
+import io.reactivex.disposables.Disposable
+import io.reactivex.schedulers.Schedulers
+import java.util.concurrent.TimeUnit
+
+/**
+ * Created by amitshekhar on 27/08/16.
+ */
+class TimerExampleActivity : AppCompatActivity() {
+
+ companion object {
+ private const val TAG = "TimerExampleActivity"
+ }
+
+ private lateinit var btn: Button
+ private lateinit var textView: TextView
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_example)
+ btn = findViewById(R.id.btn)
+ textView = findViewById(R.id.textView)
+
+ btn.setOnClickListener {
+ doSomeWork()
+ }
+ }
+
+ /*
+ * simple example using timer to do something after 2 second
+ */
+ private fun doSomeWork() {
+ getObservable()
+ // Run on a background thread
+ .subscribeOn(Schedulers.io())
+ // Be notified on the main thread
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(getObserver())
+ }
+
+ private fun getObservable(): Observable {
+ return Observable.timer(2, TimeUnit.SECONDS)
+ }
+
+ private fun getObserver(): Observer {
+ return object : Observer {
+
+ override fun onSubscribe(d: Disposable) {
+ Log.d(TAG, " onSubscribe : " + d.isDisposed)
+ }
+
+ override fun onNext(value: Long) {
+ textView.append(" onNext : value : $value")
+ textView.append(AppConstant.LINE_SEPARATOR)
+ Log.d(TAG, " onNext : value : $value")
+ }
+
+ override fun onError(e: Throwable) {
+ textView.append(" onError : " + e.message)
+ textView.append(AppConstant.LINE_SEPARATOR)
+ Log.d(TAG, " onError : " + e.message)
+ }
+
+ override fun onComplete() {
+ textView.append(" onComplete")
+ textView.append(AppConstant.LINE_SEPARATOR)
+ Log.d(TAG, " onComplete")
+ }
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/WindowExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/WindowExampleActivity.java
deleted file mode 100644
index 881db12..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/WindowExampleActivity.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.utils.AppConstant;
-
-import java.util.concurrent.TimeUnit;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observable;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.functions.Consumer;
-import io.reactivex.schedulers.Schedulers;
-
-public class WindowExampleActivity extends AppCompatActivity {
-
- private static final String TAG = WindowExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /*
- * Example using window operator -> It periodically
- * subdivide items from an Observable into
- * Observable windows and emit these windows rather than
- * emitting the items one at a time
- */
- protected void doSomeWork() {
-
- Observable.interval(1, TimeUnit.SECONDS).take(12)
- .window(3, TimeUnit.SECONDS)
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(getConsumer());
- }
-
- public Consumer> getConsumer() {
- return new Consumer>() {
- @Override
- public void accept(Observable observable) {
- Log.d(TAG, "Sub Divide begin....");
- textView.append("Sub Divide begin ....");
- textView.append(AppConstant.LINE_SEPARATOR);
- observable
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Consumer() {
- @Override
- public void accept(Long value) {
- Log.d(TAG, "Next:" + value);
- textView.append("Next:" + value);
- textView.append(AppConstant.LINE_SEPARATOR);
- }
- });
- }
- };
- }
-}
diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ZipExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/ZipExampleActivity.java
deleted file mode 100644
index 11cb394..0000000
--- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ZipExampleActivity.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package com.rxjava2.android.samples.ui.operators;
-
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.rxjava2.android.samples.R;
-import com.rxjava2.android.samples.model.User;
-import com.rxjava2.android.samples.utils.AppConstant;
-import com.rxjava2.android.samples.utils.Utils;
-
-import java.util.List;
-
-import androidx.appcompat.app.AppCompatActivity;
-import io.reactivex.Observable;
-import io.reactivex.ObservableEmitter;
-import io.reactivex.ObservableOnSubscribe;
-import io.reactivex.Observer;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.functions.BiFunction;
-import io.reactivex.schedulers.Schedulers;
-
-/**
- * Created by amitshekhar on 27/08/16.
- */
-public class ZipExampleActivity extends AppCompatActivity {
-
- private static final String TAG = ZipExampleActivity.class.getSimpleName();
- Button btn;
- TextView textView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_example);
- btn = findViewById(R.id.btn);
- textView = findViewById(R.id.textView);
-
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- doSomeWork();
- }
- });
- }
-
- /*
- * Here we are getting two user list
- * One, the list of cricket fans
- * Another one, the list of football fans
- * Then we are finding the list of users who loves both
- */
- private void doSomeWork() {
- Observable.zip(getCricketFansObservable(), getFootballFansObservable(),
- new BiFunction, List