All Your Baseの日記

モバイルアプリを開発しています。

【Android】RxでEditTextの入力内容を監視する

f:id:ayb:20171001202042j:plain

JakeさんのRxBindingを使ってEditTextへの入力内容をリアクティブ的に監視してみます。

github.com

まずはapp/build.gradleのdependenciesに追加してSyncします。

dependencies {
    //中略
    compile 'com.jakewharton.rxbinding2:rxbinding:2.0.0' //追加
}

RxTextView#textChangeEvent にEditTextをセットしてあげると、入力内容が流れていきます。

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.EditText;

import com.jakewharton.rxbinding2.widget.RxTextView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        EditText editText = findViewById(R.id.edit_text);

        RxTextView.textChangeEvents(editText)
                .subscribe(textChange -> Log.i("textChange", textChange.text().toString()));
    }
}