【发布时间】:2020-01-27 00:33:38
【问题描述】:
我正在使用 MVVM 开发一个应用程序,并且已经成功地添加了简单的 ui 元素,例如按钮和文本输入,但现在我正试图弄清楚如何绑定 material slider。
我一直在阅读listener bindings 并且一目了然的 xml 似乎让我 dp 下面的 app:onChange 类似于您将在我的“查看活动”类中看到的 addOnChangeListener(它将使用 kotlin 文件中的 addOnChangeListener,但我无法让它与 xml 文件中的直接 app:onChange 标记一起使用。
任何可以为我指明正确方向的建议或代码示例将不胜感激。谢谢。
/* xml布局文件*/
<com.google.android.material.slider.Slider
android:id="@+id/material_slider_min_temperature"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:valueFrom="1"
android:valueTo="2"
android:stepSize="1"
app:onChange="@{(slider, value, fromUser)-> mViewModel.fireSliderMinRQ(slider,value,fromUser)}"/>
/* 视图模型 */
fun fireSliderMinRQ(slider: Slider, value: Float, fromUser: Boolean){
//this will not bind correctly, i can't compile and access the parameters
}
/* 查看活动 */
this.mSliderMinTemperature!!.addOnChangeListener { slider, value, fromUser ->
this.mTvMinTemperature.text = value.toInt().toString()
slider.setOnTouchListener { v, event ->
when(event.action){
MotionEvent.ACTION_UP -> {
this.mSliderMaxTemperature!!.isEnabled = true
}
}
false
}
}
【问题讨论】: