как передать значение NumberPicker (onValueChange) через привязку данных?

Средство выбора номера Android имеет: onValueChange(NumberPicker picker, int oldVal, int newVal)

как передать эти параметры (выборщик NumberPicker, int oldVal, int newVal) в мою модель представления через привязку данных?

<data>
    <import type="android.view.View" />
    <variable name="vm" type="com.my.view.model.MainActivityVM" />
</data>
/* ... bla ...*/
<NumberPicker
    android:onValueChange="@{() -> vm.callMethod(/*???whats here???*/)}" />

Я хочу поймать новое значение в моей модели представления каждый раз, когда оно менялось.


person AnD    schedule 21.01.2018    source источник


Ответы (2)


Так:

    android:onValueChange="@{(picker,oldv,newv) -> viewModel.onValChange(oldv, newv)}">

Я решил, что сигнатура моего класса ViewModel принимает только старые и новые значения, а не NumberPicker. Это зависит от вас.

person Alan Todtenkopf    schedule 22.01.2018
comment
оно работает! Спасибо - person AnD; 22.01.2018
comment
Я не понимаю, откуда picker - person MwBakker; 08.11.2018
comment
@MwBakker Это сам вид (NumberPicker). Если я правильно помню, это обязательный параметр для всех слушателей. - person Vrakfall; 10.05.2019

Вы также можете использовать двустороннюю привязку данных, как и в любом другом изначально адаптированном представлении.

<NumberPicker
    android:value="@={vm.observableIntVariable}"
    />

Не забывайте об обычных двусторонних требованиях!

person Vrakfall    schedule 10.05.2019