**** / ошибка привязки данных **** msg: не удается найти установщик для атрибута 'app: image_url' с типом параметра java.lang.String для android.widget.ImageView - PullRequest
0 голосов
/ 13 января 2019

Застрял нижеприведенные данные для просмотра изображений - это мой адаптер coustom и Imageview. я ссылаюсь Вот [ Не удается найти установщик атрибута с параметром , но не удается найти решение, может кто-нибудь помочь, спасибо.

@BindingAdapter("app:image_url")
fun loadImage(view: ImageView, logoUrl: String?) {
    if (logoUrl == null) {
        view.setImageResource(R.drawable.alert_dark_frame)
    } else {
        Picasso.with(view.getContext())
            .load(logoUrl)
            .placeholder(R.mipmap.sym_def_app_icon)
            .into(view)
    }
}

<data>
    <import type="android.view.View" />
    <variable name="abc"
              type="com.example.viewmodel.Result"/>
</data>

<ImageView
            android:id="@+id/circleImageView"
            android:layout_width="100dp"
            android:layout_height="100dp"
            app:image_url="@{abc.picture.thumbnail}"
            />

Ответы [ 3 ]

0 голосов
/ 13 января 2019

Можете ли вы попробовать добавить плагин в файл build.gradle (app)

apply plugin: 'kotlin-kapt'
0 голосов
/ 08 мая 2019

Введите следующий код в классе модели

 companion object DataBindingAdapter {
        @BindingAdapter("bind:image_url")
        @JvmStatic
        fun loadImage(imageView: ImageView, image_url: String) {
            Picasso.get().load(image_url).fit()
                    .placeholder(R.mipmap.ic_launcher)
                    .error(R.mipmap.ic_launcher)        
                    .into(imageView)        }
    }

В XML напишите следующий код

<ImageView
            android:id="@+id/movie_image"
            android:layout_width="100dp"
            android:layout_height="100dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.027"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:image_url="@{movieList.component5()}"/>
0 голосов
/ 13 января 2019

Это нормальная ошибка, потому что класс ImageView не содержит метод setImageUrl, поэтому для этого нужно сделать обходной путь, создав класс extends ImageView и содержащий метод с именем setImageUrl, который принимает String в качестве параметра и установить изображение внутри этого метода, используя библиотеку Picasso:

public class MyImageView extends ImageView {

    // ... here is the constructors
    public void setImageUrl(String url) {
        Picasso.get().load(url).into(this);
    }
}

и после этого вы можете использовать его в xml следующим образом:

<com.yourPackage.MyImageView
    android:id="@+id/circleImageView"
    android:layout_width="100dp"
    android:layout_height="100dp"
    app:image_url="@{abc.picture.thumbnail}"
    />
...