android - 对 onClickListeners 使用数据绑定(bind)时如何将 UI 数据传递给 ViewModel 函数?

标签 android mvvm android-databinding android-viewmodel

我已经广泛搜索了这个问题,但还没有找到合理的解决方案。
我要做的只是使用布局中的数据绑定(bind)格式设置一个 onClickListener :

android:onClick="@{() -> subjectsViewModel.onClickAdd()}"
其中subjectViewModel 是一个布局变量,我将 fragment 中的ViewModel 传递给它。
我想要的是将当前输入的编辑文本数据传递给 onClickAdd() 函数。
我发现的唯一解决方案是使用双向数据绑定(bind),但我认为设置这样的基本功能不需要它。

最佳答案

您可以传递 View 引用并在将文本从 View 转换回 TextView 后从 TextView 获取文本。像这样的东西。

android:onClick="@{(view) -> subjectsViewModel.onClickAdd(view)}"
并在您的 View 模型中创建类似这样的内容。
fun onClickAdd(view: View){
 val myText = (view as TextView).text ?: ""
 //here use text 
}

关于android - 对 onClickListeners 使用数据绑定(bind)时如何将 UI 数据传递给 ViewModel 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63315774/

相关文章:

android - 使用 SDL 1.3 和 OpenGL ES 1.1 的白色纹理

c# - ListView ComputedVerticalScrollBarVisibilityProperty 总是返回 Visible?

android - 如何使用数据绑定(bind)创建焦点更改监听器

android - 坚持从 Activity 移植到 fragment

android - Kotlin - 通过与属性列表进行比较来过滤对象列表

c# - 将代码移至 viewModel 类绑定(bind)

c# - 使用多重绑定(bind)编辑文本框

Android 数据绑定(bind) DatabindingUtil 与绑定(bind)类

Android 数据绑定(bind)点击监听器不工作(随机工作)

android - Flutter:在一组小部件中组合Draggable和GestureDetector