Skip to content

Commit 4490ce6

Browse files
Add operator examples for rxjava3
1 parent 1430e48 commit 4490ce6

26 files changed

+1165
-34
lines changed

app/src/main/AndroidManifest.xml

+33-3
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,51 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3-
package="com.mindorks.rxjava3.android.examples" >
3+
package="com.mindorks.rxjava3.android.examples">
44

55
<application
66
android:allowBackup="true"
77
android:icon="@mipmap/ic_launcher"
88
android:label="@string/app_name"
99
android:roundIcon="@mipmap/ic_launcher_round"
1010
android:supportsRtl="true"
11-
android:theme="@style/AppTheme" >
12-
<activity android:name=".MainActivity" >
11+
android:theme="@style/AppTheme">
12+
<activity android:name=".ui.SelectionActivity">
1313
<intent-filter>
1414
<action android:name="android.intent.action.MAIN" />
1515

1616
<category android:name="android.intent.category.LAUNCHER" />
1717
</intent-filter>
1818
</activity>
19+
<activity
20+
android:name=".ui.OperatorsActivity"
21+
android:label="@string/operators" />
22+
<activity
23+
android:name=".ui.search.SearchActivity"
24+
android:label="@string/search" />
25+
<activity
26+
android:name=".ui.operators.SimpleExampleActivity"
27+
android:label="@string/simple" />
28+
<activity
29+
android:name=".ui.operators.MapExampleActivity"
30+
android:label="@string/map" />
31+
<activity
32+
android:name=".ui.operators.ZipExampleActivity"
33+
android:label="@string/zip" />
34+
<activity
35+
android:name=".ui.operators.TimerExampleActivity"
36+
android:label="@string/timer" />
37+
<activity
38+
android:name=".ui.operators.FilterExampleActivity"
39+
android:label="@string/filter" />
40+
<activity
41+
android:name=".ui.operators.ConcatExampleActivity"
42+
android:label="@string/concat" />
43+
<activity
44+
android:name=".ui.operators.MergeExampleActivity"
45+
android:label="@string/merge" />
46+
<activity
47+
android:name=".ui.operators.DelayExampleActivity"
48+
android:label="@string/delay" />
1949
</application>
2050

2151
</manifest>

app/src/main/java/com/mindorks/rxjava3/android/examples/MainActivity.kt

-12
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.mindorks.rxjava3.android.examples.model
2+
3+
data class ApiUser(
4+
var id: Long = 0L,
5+
var firstname: String,
6+
var lastname: String
7+
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.mindorks.rxjava3.android.examples.model
2+
3+
data class User(
4+
var id: Long = 0L,
5+
var firstname: String,
6+
var lastname: String,
7+
var isFollowing: Boolean = false
8+
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.mindorks.rxjava3.android.examples.model
2+
3+
data class UserDetail(
4+
var id: Long = 0L,
5+
var firstname: String,
6+
var lastname: String
7+
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.mindorks.rxjava3.android.examples.ui
2+
3+
import android.content.Intent
4+
import android.os.Bundle
5+
import android.view.View
6+
import androidx.appcompat.app.AppCompatActivity
7+
import com.mindorks.rxjava3.android.examples.R
8+
import com.mindorks.rxjava3.android.examples.ui.operators.*
9+
10+
class OperatorsActivity : AppCompatActivity() {
11+
12+
override fun onCreate(savedInstanceState: Bundle?) {
13+
super.onCreate(savedInstanceState)
14+
setContentView(R.layout.activity_operators)
15+
}
16+
17+
fun startSimpleActivity(view: View) {
18+
startActivity(Intent(this@OperatorsActivity, SimpleExampleActivity::class.java))
19+
}
20+
21+
fun startMapActivity(view: View) {
22+
startActivity(Intent(this@OperatorsActivity, MapExampleActivity::class.java))
23+
}
24+
25+
fun startZipActivity(view: View) {
26+
startActivity(Intent(this@OperatorsActivity, ZipExampleActivity::class.java))
27+
}
28+
29+
fun startTimerActivity(view: View) {
30+
startActivity(Intent(this@OperatorsActivity, TimerExampleActivity::class.java))
31+
}
32+
33+
fun startFilterActivity(view: View) {
34+
startActivity(Intent(this@OperatorsActivity, FilterExampleActivity::class.java))
35+
}
36+
37+
fun startConcatActivity(view: View) {
38+
startActivity(Intent(this@OperatorsActivity, ConcatExampleActivity::class.java))
39+
}
40+
41+
fun startMergeActivity(view: View) {
42+
startActivity(Intent(this@OperatorsActivity, MergeExampleActivity::class.java))
43+
}
44+
45+
fun startDelayActivity(view: View) {
46+
startActivity(Intent(this@OperatorsActivity, DelayExampleActivity::class.java))
47+
}
48+
49+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.mindorks.rxjava3.android.examples.ui
2+
3+
import android.content.Intent
4+
import android.os.Bundle
5+
import android.view.View
6+
import androidx.appcompat.app.AppCompatActivity
7+
import com.mindorks.rxjava3.android.examples.R
8+
import com.mindorks.rxjava3.android.examples.ui.search.SearchActivity
9+
10+
class SelectionActivity : AppCompatActivity() {
11+
12+
override fun onCreate(savedInstanceState: Bundle?) {
13+
super.onCreate(savedInstanceState)
14+
setContentView(R.layout.activity_selection)
15+
}
16+
17+
fun startOperatorsActivity(view: View) {
18+
startActivity(Intent(this@SelectionActivity, OperatorsActivity::class.java))
19+
}
20+
21+
fun startSearchActivity(view: View) {
22+
startActivity(Intent(this@SelectionActivity, SearchActivity::class.java))
23+
}
24+
25+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package com.mindorks.rxjava3.android.examples.ui.operators
2+
3+
import android.os.Bundle
4+
import android.util.Log
5+
import android.widget.Button
6+
import android.widget.TextView
7+
import androidx.appcompat.app.AppCompatActivity
8+
import com.mindorks.rxjava3.android.examples.R
9+
import com.mindorks.rxjava3.android.examples.utils.AppConstant
10+
import io.reactivex.rxjava3.core.Observable
11+
import io.reactivex.rxjava3.core.Observer
12+
import io.reactivex.rxjava3.disposables.Disposable
13+
14+
class ConcatExampleActivity : AppCompatActivity() {
15+
16+
companion object {
17+
private const val TAG = "ConcatExampleActivity"
18+
}
19+
20+
private lateinit var btn: Button
21+
private lateinit var textView: TextView
22+
23+
override fun onCreate(savedInstanceState: Bundle?) {
24+
super.onCreate(savedInstanceState)
25+
setContentView(R.layout.activity_example)
26+
btn = findViewById(R.id.btn)
27+
textView = findViewById(R.id.textView)
28+
btn.setOnClickListener {
29+
doSomeWork()
30+
}
31+
}
32+
33+
/*
34+
* Using concat operator to combine Observable : concat maintain
35+
* the order of Observable.
36+
* It will emit all the 7 values in order
37+
* here - first "A1", "A2", "A3", "A4" and then "B1", "B2", "B3"
38+
* first all from the first Observable and then
39+
* all from the second Observable all in order
40+
*/
41+
private fun doSomeWork() {
42+
val observableA = Observable.fromArray("A1", "A2", "A3", "A4")
43+
val observableB = Observable.fromArray("B1", "B2", "B3", "B4")
44+
45+
Observable.concat(observableA, observableB)
46+
.subscribe(getObserver())
47+
}
48+
49+
private fun getObserver(): Observer<String> {
50+
return object : Observer<String> {
51+
52+
override fun onSubscribe(d: Disposable) {
53+
Log.d(TAG, " onSubscribe : " + d.isDisposed)
54+
}
55+
56+
override fun onNext(value: String) {
57+
textView.append(" onNext : value : $value")
58+
textView.append(AppConstant.LINE_SEPARATOR)
59+
Log.d(TAG, " onNext : value : $value")
60+
}
61+
62+
override fun onError(e: Throwable) {
63+
textView.append(" onError : " + e.message)
64+
textView.append(AppConstant.LINE_SEPARATOR)
65+
Log.d(TAG, " onError : " + e.message)
66+
}
67+
68+
override fun onComplete() {
69+
textView.append(" onComplete")
70+
textView.append(AppConstant.LINE_SEPARATOR)
71+
Log.d(TAG, " onComplete")
72+
}
73+
}
74+
}
75+
76+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
package com.mindorks.rxjava3.android.examples.ui.operators
2+
3+
import android.os.Bundle
4+
import android.util.Log
5+
import android.widget.Button
6+
import android.widget.TextView
7+
import androidx.appcompat.app.AppCompatActivity
8+
import com.mindorks.rxjava3.android.examples.R
9+
import com.mindorks.rxjava3.android.examples.utils.AppConstant
10+
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
11+
import io.reactivex.rxjava3.core.Observable
12+
import io.reactivex.rxjava3.core.Observer
13+
import io.reactivex.rxjava3.disposables.Disposable
14+
import io.reactivex.rxjava3.schedulers.Schedulers
15+
import java.util.concurrent.TimeUnit
16+
17+
18+
class DelayExampleActivity : AppCompatActivity() {
19+
20+
companion object {
21+
private const val TAG = "DelayExampleActivity"
22+
}
23+
24+
private lateinit var btn: Button
25+
private lateinit var textView: TextView
26+
27+
override fun onCreate(savedInstanceState: Bundle?) {
28+
super.onCreate(savedInstanceState)
29+
setContentView(R.layout.activity_example)
30+
btn = findViewById(R.id.btn)
31+
textView = findViewById(R.id.textView)
32+
33+
btn.setOnClickListener {
34+
doSomeWork()
35+
}
36+
}
37+
38+
/*
39+
* simple example using delay to emit after 2 second
40+
*/
41+
private fun doSomeWork() {
42+
getObservable()
43+
.delay(2, TimeUnit.SECONDS)
44+
// Run on a background thread
45+
.subscribeOn(Schedulers.io())
46+
// Be notified on the main thread
47+
.observeOn(AndroidSchedulers.mainThread())
48+
.subscribe(getObserver())
49+
}
50+
51+
52+
private fun getObservable(): Observable<String> {
53+
return Observable.just("Amit")
54+
}
55+
56+
private fun getObserver(): Observer<String> {
57+
return object : Observer<String> {
58+
59+
override fun onSubscribe(d: Disposable) {
60+
Log.d(TAG, " onSubscribe : " + d.isDisposed)
61+
}
62+
63+
override fun onNext(value: String) {
64+
textView.append(" onNext : value : $value")
65+
textView.append(AppConstant.LINE_SEPARATOR)
66+
Log.d(TAG, " onNext : value : $value")
67+
}
68+
69+
override fun onError(e: Throwable) {
70+
textView.append(" onError : " + e.message)
71+
textView.append(AppConstant.LINE_SEPARATOR)
72+
Log.d(TAG, " onError : " + e.message)
73+
}
74+
75+
override fun onComplete() {
76+
textView.append(" onComplete")
77+
textView.append(AppConstant.LINE_SEPARATOR)
78+
Log.d(TAG, " onComplete")
79+
}
80+
}
81+
}
82+
83+
}

0 commit comments

Comments
 (0)