我想使用数据绑定在 ImageView 上设置 onClickListener ,并通过 ViewModel(MVVM)对其进行控制
在xml布局中,我使用数据绑定实现的所有功能均有效。但是 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>
ViewModel
fun save(photo: Photo){
setWallpaper(photo, false)
}
片段:
viewModel.save(photoObj!!)
我不知道这是什么错误。我尝试了 stackoverflow 的解决方案,但没有一个解决了我的问题。
我想使用数据绑定和 MVVM 设置 onClick 侦听器,我不知道这是什么问题,不胜感激。< / p>
答案 0 :(得分:0)
您需要将照片传递给save
功能,
android:onClick="@{() -> viewModelDetail.save(photo)}"
答案 1 :(得分:0)
您还可以尝试如下修改点击: android:onClick =“ @ {()-> viewModelDetail.save(photo)}”