Обработка события onClick с привязкой данных и MVVM - PullRequest
0 голосов
/ 05 февраля 2019

Я хочу установить onClickListener на ImageView с использованием Связывание данных и управлять им из 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 , но ни один из них не решил мою проблему.

Я хочу установить onClick Слушатель, использующий Привязка данных и MVVM Любые решения будут признательны, я не знаю, в чем проблема.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Вы также можете попробовать изменить свой onClickListener следующим образом: android:onClick="@{() -> viewModelDetail.save(photo)}"

0 голосов
/ 05 февраля 2019

вам нужно передать фотографию в функцию save, вот так

android:onClick="@{() -> viewModelDetail.save(photo)}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...