RxJava笔记_2_转换

创建:https://blog.csdn.net/whjk20/article/details/107468612

1. map

    //将被观察者发送的数据类型转变成其他的类型
    private fun testMap(){
        Log.d(TAG, "testMap - start")
        // map 里实现Function < Int, String >接口, 覆写了 fun apply(Integer integer) : String
        Observable.just(1, 2, 3)
            .map { value ->
                "I am $value"
            }
            .subscribe(object : Observer<String> {
                override fun onComplete() {
                    Log.d(TAG, "testMap - Observer=====onComplete")
                }

                override fun onSubscribe(d: Disposable) {
                    Log.d(TAG, "testMap - Observer=====onSubscribe")
                }

                override fun onNext(t: String) {
                    Log.d(TAG, "testMap - Observer===== onNext parm = $t")
                }

                override fun onError(e: Throwable) {
                    Log.d(TAG, "onError - Observer=====onSubscribe")
                }
            })
        Log.d(TAG, "testMap - end")
    }

2. flatmap

    private fun testFlatMap() {
        var plan1 = Plan("06:30", "早上上班准备")
        plan1.actionList = mutableListOf("刷牙", "洗脸", "吃早餐")

        var plan2 = Plan("12:00", "午餐及午休")
        plan2.actionList = mutableListOf("吃饭", "散步", "午休")

        var plan3 = Plan("22:00", "睡前准备")
        plan3.actionList = mutableListOf("刷牙", "看书", "听音乐")

        var planList1 = mutableListOf(plan1, plan2)
        var planList2 = mutableListOf(plan1, plan3)
        var planList3 = mutableListOf(plan2, plan3)

        var person1 = Person("张三", planList1)
        var person2 = Person("李四", planList2)
        var person3 = Person("王五", planList3)
        var personList = mutableListOf(person1, person2, person3)

        Observable.fromIterable(personList)
            .flatMap<Plan> { person -> Observable.fromIterable(person.getPlanList()) }
            .flatMap<String> { plan -> Observable.fromIterable(plan.actionList) }
            .subscribe(object : Observer<String> {
                override fun onSubscribe(d: Disposable) {}
                override fun onNext(s: String) {
                    Log.d(TAG, "==================action: $s")
                }

                override fun onError(e: Throwable) {}
                override fun onComplete() {}
            })
    }
class Plan(var time: String, var content: String) {
    var actionList: List<String> = ArrayList()
}
class Person(var name: String, planList: List<Plan>) {
    private var planList: List<Plan> = ArrayList()

    fun getPlanList(): List<Plan> {
        return planList
    }

    fun setPlanList(planList: List<Plan>) {
        this.planList = planList
    }

    init {
        this.planList = planList
    }
}

3. 输出

07-23 20:26:23.899 D 7664     RxJavaTest:            testMap - start 
07-23 20:26:23.924 D 7664     RxJavaTest:            testMap - Observer=====onSubscribe 
07-23 20:26:23.924 D 7664     RxJavaTest:            testMap - Observer===== onNext parm = I am 1 
07-23 20:26:23.924 D 7664     RxJavaTest:            testMap - Observer===== onNext parm = I am 2 
07-23 20:26:23.924 D 7664     RxJavaTest:            testMap - Observer===== onNext parm = I am 3 
07-23 20:26:23.924 D 7664     RxJavaTest:            testMap - Observer=====onComplete 
07-23 20:26:23.924 D 7664     RxJavaTest:            testMap - end 
07-23 20:26:23.949 D 7664     RxJavaTest:            ==================action: 刷牙 
07-23 20:26:23.950 D 7664     RxJavaTest:            ==================action: 洗脸 
07-23 20:26:23.950 D 7664     RxJavaTest:            ==================action: 吃早餐 
07-23 20:26:23.950 D 7664     RxJavaTest:            ==================action: 吃饭 
07-23 20:26:23.950 D 7664     RxJavaTest:            ==================action: 散步 
07-23 20:26:23.950 D 7664     RxJavaTest:            ==================action: 午休 
07-23 20:26:23.950 D 7664     RxJavaTest:            ==================action: 刷牙 
07-23 20:26:23.950 D 7664     RxJavaTest:            ==================action: 洗脸 
07-23 20:26:23.950 D 7664     RxJavaTest:            ==================action: 吃早餐 
07-23 20:26:23.950 D 7664     RxJavaTest:            ==================action: 刷牙 
07-23 20:26:23.950 D 7664     RxJavaTest:            ==================action: 看书 
07-23 20:26:23.950 D 7664     RxJavaTest:            ==================action: 听音乐 
07-23 20:26:23.951 D 7664     RxJavaTest:            ==================action: 吃饭 
07-23 20:26:23.951 D 7664     RxJavaTest:            ==================action: 散步 
07-23 20:26:23.951 D 7664     RxJavaTest:            ==================action: 午休 
07-23 20:26:23.951 D 7664     RxJavaTest:            ==================action: 刷牙 
07-23 20:26:23.951 D 7664     RxJavaTest:            ==================action: 看书 
07-23 20:26:23.951 D 7664     RxJavaTest:            ==================action: 听音乐 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值