RxBindings For Spinner?

2019-04-04 17:03发布

问题:

i am new android and rxjava. i have been through many examples where we listen for events with rxbindings. such as this

 RxView.clicks(b).subscribe(new Action1<Void>() {
                    @Override
                    public void call(Void aVoid) {
                        // do some work here
                    }
                });

or

RxTextView.textChanges(name)
            .subscribe(new Action1<String>() {
                @Override
                public void call(String value) {
                    // do some work with the updated text
                }
            });

now i am trying to do the same for android spinner. i want to listen for itemselected event. can anyone help?

回答1:

The items in the Spinner come from the Adapter associated with this view.

See the Spinners guide.

To define the selection event handler for a spinner, implement the AdapterView.OnItemSelectedListener interface and the corresponding onItemSelected() callback method. For example, here's an implementation of the interface in an Activity:

Documentation: https://developer.android.com/guide/topics/ui/controls/spinner.html

RxBinding Documentation: https://github.com/JakeWharton/RxBinding/blob/31e02dcaca426e2ce440093b501e1a28fe1461f6/rxbinding/src/androidTest/java/com/jakewharton/rxbinding2/widget/RxAdapterViewTest.java

After searching for Spinner in GitHub-Repository, I found an example for Spinner:

RxAdapterView.itemSelections(spinner)
    .subscribeOn(AndroidSchedulers.mainThread())
    .subscribe(integer -> {
        Log.v("spinner", integer.toString());
    });