![](/img/trans.png)
[英]msg:Cannot find the getter for attribute 'android:text' with value type java.lang.String in data binding?
[英]****/ data binding error ****msg:Cannot find the setter for attribute 'app:image_url' with parameter type java.lang.String on android.widget.ImageView
卡住 imageview databindig 下面是我的自定義適配器和 Imageview。 我參考了這個 [https://stackoverflow.com/questions/40188894/cannot-find-the-setter-for-attribute-with-parameter] 但沒有得到解決方案 - 任何人都可以幫忙嗎? 謝謝。
@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}"
/>
您可以嘗試在 build.gradle (app) 文件中添加插件嗎
apply plugin: 'kotlin-kapt'
這是正常錯誤,因為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}"
/>
我剛從
應用程序:srcCompat
到
安卓:源代碼
在我的情況下,當它與數據綁定一起使用時。現在工作正常。希望這有幫助。
舊代碼
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="80dp"
android:layout_height="80dp"
android:textSize="16sp"
android:fontFamily="@font/avenir_roman"
android:textColor="@color/textColor"
app:srcCompat="@{model.image}"/>
新代碼
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="80dp"
android:layout_height="80dp"
android:textSize="16sp"
android:fontFamily="@font/avenir_roman"
android:textColor="@color/textColor"
android:src="@{model.image}"/>
在模型類中編寫如下代碼
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()}"/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.