android - 使用数据绑定(bind)和 MVVM 处理 onClick 事件

标签 android mvvm data-binding

我想使用 DatabindingImageView 上设置一个 onClickListener 并从 ViewModel(MVVM) 控制它.

在 xml 布局中,我使用 Databinding 实现的所有内容都有效。但是 onClick 事件不起作用。

我收到这个错误:

error:cannot find symbol

XML:

<data>
    <variable
        name="photo"
        type="learn.app.papewall.model.Photo" />
    <variable
        name="viewModelDetail"
        type="learn.app.papewall.view.detail.DetailViewModel" />
</data>
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".view.detail.DetailFragment">

    <ImageView android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/image"
        android:scaleType="center"
        android:onClick="@{viewModelDetail.save()}"
        app:imageUrl="@{photo.urls.regular}"/>
    <TextView
        android:id="@+id/detailUsername"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="@dimen/padding_large"
        android:textColor="#000"
        android:layout_alignBottom="@+id/image"
        android:text="@{photo.user.name}"/>
</RelativeLayout>

View 模型

fun save(photo: Photo){
    setWallpaper(photo, false)
}

fragment :

viewModel.save(photoObj!!)

我不知道这是什么错误。我尝试了 stackoverflow 的解决方案,但没有一个解决了我的问题。

我想使用 DatabindingMVVM 设置 onClick Listener 任何解决方案都将不胜感激我不知道是什么问题。

最佳答案

您也可以尝试按如下方式修改您的 onClickListener: android:onClick="@{() -> viewModelDetail.save(photo)}"

关于android - 使用数据绑定(bind)和 MVVM 处理 onClick 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54533689/

相关文章:

android - MPAndroidChart PieChart 标签在值之上

iOS MVVM : Is Delegation Pattern a Requirement?

c# - 防止 MVVM/MDI 应用程序中几乎重复的 RelayCommands

c# - 有没有办法将 2 个(或更多)WPF 项绑定(bind)到 C# 中的单个属性?

java swing 和 sqlite

android - 如何在运行时检查授予权限?

android - 如何正确处理嵌套 fragment ?

android - 如何直接调用电话?

.net - 从ListBox SelectedItems属性检索枚举

c# - WPF DataGrid - 基于行动态绑定(bind) DataGridComboBoxColumn