Я пытаюсь изучить привязку данных с помощью Kotlin , и мне удалось успешно реализовать его для редактирования текста и текстовых представлений.После этого я пытаюсь использовать его для просмотра изображений.В настоящее время я пытаюсь предоставить пользователям возможность выбрать фотографию своего профиля, нажав на изображение.Этот код работает правильно, но когда я пытаюсь установить изображение для представления с помощью адаптера привязки данных, я получаю следующую ошибку:
Обнаружены ошибки привязки данных.**** / ошибка привязки данных **** msg: не удается найти получатель для атрибута 'android: userImage' с типом значения java.lang.String в de.hdodenhof.circleimageview.CircleImageView.file: /home/parangat-pt-p10/AndroidStudioProjects/ReUsableAndroid/reusable_android/app/src/main/res/layout/activity_signup.xml loc: 25: 12 - 31:48 **** \ ошибка привязки данных ****
Ниже приведен мой код для того же.
Код компоновки ImageView
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center_horizontal"
android:userImage="@{signup.userImage}"
android:id="@+id/iv_user"
android:src="@drawable/profile"/>
Код класса модели
class Signup {
var userImage=""
var firstName=""
var lastName=""
var phoneNumber=""
var postCode=""
var country=""
var email=""
var password=""
var confirmPassword=""
var isAcceptTerms=false
@BindingAdapter("android:userImage")
fun loadImage(view: CircleImageView, imageUrl: String) {
userImage=imageUrl
Glide.with(view.context).load(imageUrl).into(view)
}
}
И это то, что я делаю после того, как пользователь выбрал изображение
override fun onSingleImageSelected(uri: Uri?) {
signupBinding.signup?.loadImage(iv_user,uri.toString())
}
Поскольку это написано в kotlin, поэтому нет необходимости определять методы getter и setter.но ошибка говорит о том, что метод получения не найден.
Как и предполагал Энзоки, я создал адаптер привязки в отдельном файле, как показано ниже
@BindingAdapter("userImage")
fun loadImage(view: CircleImageView, imageUrl: String) {
Glide.with(view.context).load(imageUrl).into(view)
}
Но у меня все еще остается та же проблема.