如何使用RxJava绑定Radio Buttons

时间:2015-05-12 01:51:17

标签: android rx-java radio-group rx-android

我正在关注Qiitanium应用的代码(请参阅链接中突出显示的行),我无法弄清楚如何绑定RadioButtons

假设我有一个带有R.id.rgMyButtons的RadioGroup作为Id,它包含3个RadioButtons“Dead”,“Alive”,“Body Missing”和Ids是R.id.rbDead,R.id.rbAlive,R。 id.rbMissing

我将RadioGroup字段设置为

Rx<RadioGroup> radioGroup;

我将onViewCreated中的视图设置为

rdGroup = RxView.findById(this, R.id.rgMyButtons);
rdGroup.get().setOnCheckedChangeListener(mOnPersonStateUpdateListener);

在onBind中,我想将RadioGroup绑定到模型数据,以便将返回map的值直接返回到该组中正确的RadioButton。我正在寻找像

这样的东西
rdGroup.bind(person.state(), RxActions.someAction()),

这样它就被RadioGroup绑定并自动设置正确的值。

person_state()实际上为Dead返回2,为Alive返回3,为Missing返回4,我想要检查RadioGroup中的正确字段。我怎样才能在RxAndroid中实现这一目标?

1 个答案:

答案 0 :(得分:1)

我能够自己解决这个问题。对于任何可能遇到同样问题的人来说,这是答案....

我在课堂上写了一个函数

protected RxAction<RadioGroup, String> setRadioButton() {
    return new RxAction<RadioGroup, String>() {
        @Override
        public void call(final RadioGroup radioGroup, final String selection) {
           RadioButton rb;
           switch(selection)
           {
               case "2":
                   rb = (RadioButton)findViewById(R.id.rbDead);
                   rb.setChecked(true);
                   break;

               case "3":
                   rb = (RadioButton)findViewById(R.id.rbAlive);
                   rb.setChecked(true);
                   break;

               case "4":
                   rb = (RadioButton)findViewById(R.id.rbMissing);
                   rb.setChecked(true);
                   break;

           }
        }
    };
}

在onBind中我使用了

rdGroup.bind(person.state(), setRadioButton()),