0

Qiitaniumアプリのコードに従っています(リンク内の強調表示された行を参照)。RadioButton をバインドする方法がわかりません。

R.id.rgMyButtons を Id として持つ RadioGroup があり、ID が R.id.rbDead、R.id.rbAlive、R.id.rbMissing の 3 つの RadioButtons "Dead"、"Alive"、"Body Missing" が含まれているとします。

RadioGroupフィールドを次のように設定しました

Rx<RadioGroup> radioGroup;

onViewCreated で設定されたビューを次のように取得します

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

onBind では、返される値がそのグループの正しい RadioButton に直接マップされるように、RadioGroup をモデル データにバインドしたいと思います。私は次のようなものを探しています

rdGroup.bind(person.state(), RxActions.someAction()),

RadioGroup にバインドされ、正しい値が自動的に設定されるようにします。

person_state() は、実際には Dead の場合は 2、Alive の場合は 3、Missing の場合は 4 を返します。これを RadioGroup の正しいフィールドにチェックしたいと思います。RxAndroidでこれを達成するにはどうすればよいですか?

4

1 に答える 1

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()),
于 2015-05-25T11:51:45.617 に答える