/
MergeOperatorActivity.kt
69 lines (56 loc) · 2.33 KB
/
MergeOperatorActivity.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package com.freeankit.rxkotlinoperators.ui.RxOperators.combiningOperators
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.util.Log
import com.freeankit.rxkotlinoperators.R
import com.freeankit.rxkotlinoperators.utils.Constant
import io.reactivex.Observable
import io.reactivex.Observer
import io.reactivex.disposables.Disposable
import kotlinx.android.synthetic.main.activity_example_operator.*
/**
* @author Ankit Kumar (ankitdroiddeveloper@gmail.com) on 10/01/2018 (MM/DD/YYYY )
*/
class MergeOperatorActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_example_operator)
btn.setOnClickListener({ executeMergeOperator() })
}
/*
* 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 executeMergeOperator() {
val aStrings = arrayOf("A1", "A2", "A3", "A4")
val bStrings = arrayOf("B1", "B2", "B3")
val aObservable = Observable.fromArray(*aStrings)
val bObservable = Observable.fromArray(*bStrings)
Observable.merge(aObservable, bObservable)
.subscribe(getObserver())
}
private fun getObserver(): Observer<String> {
return object : Observer<String> {
override fun onSubscribe(d: Disposable) {
Log.d(Constant().TAG, " onSubscribe : " + d.isDisposed)
}
override fun onNext(value: String) {
textView.append(" onNext : value : " + value)
textView.append(Constant().LINE_SEPARATOR)
Log.d(Constant().TAG, " onNext : value : " + value)
}
override fun onError(e: Throwable) {
textView.append(" onError : " + e.message)
textView.append(Constant().LINE_SEPARATOR)
Log.d(Constant().TAG, " onError : " + e.message)
}
override fun onComplete() {
textView.append(" onComplete")
textView.append(Constant().LINE_SEPARATOR)
Log.d(Constant().TAG, " onComplete")
}
}
}
}