studio - Error de enlace de datos de Android: ejecución fallida java.lang.RuntimeException:
data binding c# (3)
Intenté hacer un ejemplo de ejemplo analógico desde aquí: http://www.mutualmobile.com/posts/using-data-binding-api-in-recyclerview Y todo funciona correctamente, excepto la URL de imagen vinculante. Recibí el error: Error: ejecución fallida para la tarea '': aplicación: compileDebugJavaWithJavac''.
java.lang.RuntimeException: Se encontraron errores de enlace de datos. **** / error de enlace de datos **** msg: No se puede encontrar el setter para el atributo ''app.imageUrl'' con el tipo de parámetro java.lang.String. archivo: D: / Proyectos / aplicación / src / main / res / layout / view_simple_item.xml loc: 43: 32 - 43:47 **** / data binding error ****
Mi diseño:
...
<data>
<variable
name="item"
type="com.example.Item" />
</data>
...
<ImageView
android:id="@+id/iv_item"
app.imageUrl="@{item.imageUrl}"
... />
...
Mi adaptador:
package com.example.adapters;
import android.databinding.BindingAdapter;
import android.widget.ImageView;
import com.squareup.picasso.Picasso;
public class CustomBindingAdapter {
@BindingAdapter("bind:imageUrl")
public static void loadImage(ImageView imageView, String url) {
Picasso.with(imageView.getContext()).load(url).into(imageView);
}
}
Encontrado mi problema En lugar de:
app.imageUrl="@{item.imageUrl}"
Debe ser:
app:imageUrl="@{item.imageUrl}"
Establezca el argumento de la anotación BindingAdapter en "app: imageUrl". Entonces debes tener esto:
@BindingAdapter("app:imageUrl")
en lugar de esto:
@BindingAdapter("bind:imageUrl")
Y también lo que dice @Alexander Myznikov: cambie app.imageUrl
a la app:imageUrl
Solo intente cambiar el nombre de la referencia dentro de @BindingAdapter
@BindingAdapter({"bind:image_url"})
public static void loadImage(ImageView imageView, String url) {
Picasso.with(imageView.getContext()).load(url).into(imageView);
}
Y en su diseño esto:
...
<data>
<variable
name="item"
type="com.example.Item" />
</data>
...
<ImageView
android:id="@+id/iv_item"
app:image_url="@{item.imageUrl}"
... />
...