我正在尝试新的android x库,它取代了android中的旧appCompat库 . 我遇到了一个问题 . 我想在recyclerView项目上加载图像,为此我想使用数据绑定 . 这是我的代码
<androidx.appcompat.widget.AppCompatImageView
app:loadImageFromNetwork="@{car.model.photoUrl}" <- here I'm using binding class
android:id="@+id/appCompatImageView"
android:layout_width="170dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
在这里我的绑定类
import androidx.appcompat.widget.AppCompatImageView
import androidx.databinding.BindingAdapter
import com.bumptech.glide.Glide
object Bindings {
@JvmStatic
@BindingAdapter("loadImageFromNetwork")
fun loadImageFromNetwork(imageView: AppCompatImageView, url: String) {
Glide.with(imageView.context).load(url).into(imageView)
}
}
而且我收到了这个错误
* What went wrong:
Execution failed for task ':app:compileDebugJavaWithJavac'.
> android.databinding.tool.util.LoggedErrorException: Found data binding errors.
****/ data binding error ****msg:Cannot find the setter for attribute 'app:loadImageFromNetwork' with parameter type java.lang.String on android.widget.ImageView.
file:S:\Downloads\ppp\MyApplication\app\src\main\res\layout\car_item_view.xml
loc:26:44 - 26:61
****\ data binding error ****
有什么想法有什么不对吗?
编辑我也在我的 gradle.properties
文件中有这个
android.useAndroidX=true
android.enableJetifier=true
这是我的汽车课
data class Car(val id: Int, val plateNumber: String, val location: Location, val model: Model)
data class Model(val id: Int, val title: String, val photoUrl: String)
2 回答
您的编译器无法找到方法
loadImageFromNetwork()
,因为它已添加到 object 中,因此请考虑将其放在类中:你很高兴去上课 .
试试这个
在您的XML文件中
它适用于我,您需要先获取URL,然后数据绑定将您的URL放入imageView . 我也使用androidX,不是用于图像,而是用于其他组件