Rxjava2

package com.example.administrator.rxbinding;

import android.app.Activity;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;

import com.jakewharton.rxbinding.widget.RxCompoundButton;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;

import rx.Observable;
import rx.Observer;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Action0;
import rx.functions.Action1;
import rx.functions.Func1;
import rx.schedulers.Schedulers;
import rx.subjects.Subject;

public class Main2Activity extends Activity {
    private Button but1, but2, but3;
    private CheckBox cb;


    /*
    数据的合并
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        initView();
        myOncick();
    }

    private void myOncick() {
        /*
        倒计时发送验证码
         */
        but2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                final int take = 10;
                Observable.interval(0, 1, TimeUnit.SECONDS).take(take + 1)
                        .map(new Func1<Long, Long>() {//进行转换

                            @Override
                            public Long call(Long aLong) {
                                return take - aLong;
                            }
                        })
                        .observeOn(AndroidSchedulers.mainThread())//发射用的是observeOn
                        .doOnSubscribe(new Action0() {//执行的时候不可点击
                            @Override
                            public void call() {
                                but2.setEnabled(false);

                            }
                        })
                        .subscribe(new Observer<Long>() {
                            @Override
                            public void onCompleted() {
                                but2.setEnabled(true);
                                but2.setText("按钮");
                            }

                            @Override
                            public void onError(Throwable e) {

                            }

                            @Override
                            public void onNext(Long aLong) {
                                Log.d("xxxx", aLong + "");
                                but2.setText(aLong + "");
                            }
                        });
            }
        });
        /*
        把两个结果进行合并
         */
        but1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Observable.merge(getListObserver(), getListObserverWodk()).subscribe(new Subscriber<List<GouWuChe>>() {
                    @Override
                    public void onCompleted() {
                        Log.d("onCompleted", "onCompleted");
                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onNext(List<GouWuChe> gouWuChes) {
                        for (GouWuChe gouWuChe : gouWuChes) {
                            Log.d("xxxxx", gouWuChe.toString());
                        }
                    }

                });
            }
        });
        RxCompoundButton.checkedChanges(cb).subscribe(new Action1<Boolean>() {
            @Override
            public void call(Boolean aBoolean) {
                but3.setEnabled(aBoolean);
                but3.setBackgroundColor(aBoolean ? Color.parseColor("#666666") : Color.parseColor("#999999"));
            }
        });
    }


    private void initView() {
        but1 = (Button) findViewById(R.id.but1);
        but2 = (Button) findViewById(R.id.but2);
        but3 = (Button) findViewById(R.id.but3);
        cb = (CheckBox) findViewById(R.id.cb);
    }

    private Observable<List<GouWuChe>> getListObserver() {
        List<GouWuChe> list = new ArrayList<>();
        list.add(new GouWuChe(1, "菜鸟"));
        list.add(new GouWuChe(3, "菜鸟3"));
        list.add(new GouWuChe(2, "菜鸟2"));
        list.add(new GouWuChe(5, "菜鸟5"));
        return Observable.just(list);//发射出去
    }

    private Observable<List<GouWuChe>> getListObserverWodk() {
        List<GouWuChe> list = new ArrayList<>();
        list.add(new GouWuChe(4, "菜鸟4"));
        list.add(new GouWuChe(6, "菜鸟6"));
        list.add(new GouWuChe(7, "菜鸟6"));
        list.add(new GouWuChe(8, "菜鸟7"));
        return Observable.just(list).subscribeOn(Schedulers.io());//发射出去
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值