Search code examples
androidrx-javarx-binding

RxBindings For Spinner?


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?


Solution

  • 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());
        });