RxJava--RxBinding

RxBinding 是 Jake Wharton 的一個開源庫,它提供了一套在 Android 平臺上的基於 RxJava 的 Binding API。所謂 Binding,就是類似設置 OnClickListener 、設置 TextWatcher 這樣的註冊綁定對象的 API。

首先需要引入lib
android Studio

compile 'com.jakewharton.rxbinding:rxbinding:0.4.0'

通過幾個例子說明使用

CheckBox chekcbox = (CheckBox) findViewById(R.id.chekcbox);
        //觀察選擇的變化
        RxCompoundButton.checkedChanges(chekcbox)
                .subscribe(new Action1<Boolean>() {
                    @Override
                    public void call(Boolean aBoolean) {
                        textview.setText(aBoolean.toString());
                    }
                });

RxJava 中 SharedPreferences的使用
//注:需要RxSharedPreferences庫支持:
compile ‘com.f2prateek.rx.preferences:rx-preferences:1.0.1’

 //同步SharedPreferences
        SharedPreferences msharedPreferences =  PreferenceManager.getDefaultSharedPreferences(this);
        RxSharedPreferences rxSharedPreferences = RxSharedPreferences.create(msharedPreferences);
        Preference<Boolean> xxFunction = rxSharedPreferences.getBoolean("checkbox_start", false);

        CheckBox chekcbox2 = (CheckBox) findViewById(R.id.chekcbox2);
        chekcbox2.setChecked(xxFunction.get());//設置保存的狀態
        RxCompoundButton.checkedChanges(chekcbox2)
                .subscribe(xxFunction.asAction());//保存狀態
//觀察點擊事件
        Button button = (Button) findViewById(R.id.button);
        RxView.clicks(button)
                .subscribe(new Action1<Void>() {
                    @Override
                    public void call(Void aVoid) {
                        Toast.makeText(UpdateViewActivity.this, "點擊", Toast.LENGTH_SHORT).show();
                    }
                });

防止重複點擊

 //解決連續點擊問題
        Button button2 = (Button)findViewById(R.id.button2);
        RxView.clicks(button2)
                .throttleFirst(3, TimeUnit.SECONDS)//在一段時間內只取一個事件 第二個參數是單位
                .subscribe(new Action1<Void>() {
                    @Override
                    public void call(Void aVoid) {
                        Toast.makeText(UpdateViewActivity.this, "防止連續點擊", Toast.LENGTH_SHORT).show();
                    }
                });
    //觀察EditText改變事件
        tv_ed = (TextView) findViewById(R.id.tv_ed);
        EditText edittext = (EditText) findViewById(R.id.edittext);
        RxTextView.textChanges(edittext)
                .subscribe(new Action1<CharSequence>() {
                    @Override
                    public void call(CharSequence charSequence) {
                        tv_ed.setText(charSequence);
                    }
                });
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章