以前の現場でRxJavaを使って開発してたのですが、
RxKotlinもあるよ、ということなので、暇つぶしにつかってみた。
-
参考にしたページ(というかコピペ)
https://medium.com/@laurence.liuuu/android-reactive-programming-with-reactivex-basic-examples-with-rxjava2-rxkotlin-and-rxandroid-d202ad64370d
app/build.gradle
android {
・・・(略)・・・
}
dependencies {
・・・(略)・・・
implementation 'io.reactivex.rxjava2:rxjava:2.2.4'
implementation 'io.reactivex.rxjava2:rxkotlin:2.3.0'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
}
ライブラリは上記3つのみ追加すればOK。
RxKotlinBasicDialogFragment.kt
package com.example.myapplication
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import io.reactivex.rxkotlin.subscribeBy
import io.reactivex.rxkotlin.toObservable
import io.reactivex.schedulers.Schedulers
import kotlinx.android.synthetic.main.dialog_reactive.*
class RxKotlinBasicDialogFragment : DialogFragment() {
private lateinit var mDisposable: Disposable
private var mResult: String = ""
companion object {
fun newInstance(): RxKotlinBasicDialogFragment {
return RxKotlinBasicDialogFragment()
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val anyObservable = getList().toObservable()
mDisposable = anyObservable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeBy(
onNext = {
Log.i("onNext", it.toString())
mResult += "$it, "
},
onError = {
Log.i("onError", it.toString())
},
onComplete = {
Log.i("onNext", "DONE!!")
resultTextView.text = mResult
}
)
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.dialog_reactive, container, false)
}
override fun onDestroy() {
super.onDestroy()
mDisposable.dispose()
}
private fun getList(): List<Any> {
return listOf(true, 1, 2, "Three", 4.0f, 4.5, "Five", false)
}
}
あとで、FlatMapとかzipもためしてみる。。。