LoginSignup
5

More than 5 years have passed since last update.

[android] Databinding + Spinner

Posted at

自分のブログにも書いたけど、こっちでも共有します。

うまくViewModelからXmlのスピナーを制御できないかなーといろいろ調査したらできました。
とある記事で@=を使ってTwo-way Bindingをやってるのもありましたが、今回はリスナーで変更を受けて更新する感じです。

方法

activity_something.xml
 <Spinner
    android:id="@+id/spinner_number"
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:spinnerMode="dialog"
    android:onItemSelected="@{(parent, view, position, id) -> viewModel.onItemSelectedNumber(parent, view, position, id)}"
    android:entries="@{viewModel.numberList}"
    />
SomethingViewModel.java
public void onItemSelectedNumber(AdapterView<?> parent, View view, int position, long id) {
    setNumber(numberList.get(position));
    //Call Sip Register here
  }

android:entriesにviewModelからListを渡しています。裏側でうまくCharSequence[]へ変換して、Adapterへの設定もやってくれます。

setOnItemSelectedListeneronItemSelectedメソッドをViewModelに用意してXMLに渡しています。
これで、ユーザーがアイテム選択した祭に、ViewModel側で対処できます。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5