what way two tutorial studio databinding data compiler android

tutorial - two way data binding android



Android+Data Binding @style (2)

Mientras utilizaba la nueva API de enlace de datos, encontré que no se puede enlazar con el atributo "estilo". El compilador se queja de que no puede encontrar el estilo. Sin embargo, si simplemente configuro el estilo como está, lo encontraré bien. Por ejemplo:

no funciona:

style="@{TextUtils.isEmpty(row.getSubtitle()) ? @style/SubTitle : @style/Title}"

trabajos:

style="@style/SubTitle"

Error:

Error: la ejecución falló para la tarea '': aplicación: compileDebugJavaWithJavac''.

java.lang.RuntimeException: Se encontraron errores de enlace de datos. **** / error de enlace de datos **** msg: los identificadores deben tener tipos definidos por el usuario del archivo XML. A su subtítulo le falta el archivo: /~/test/app/src/main/res/layout/row.xml loc: 48: 71 - 48:78 **** / error de enlace de datos ****


Aunque @bwhite es correcto, puede haber soluciones que puedas hacer. Depende de lo que necesites para cambiar condicionalmente. Por ejemplo, si desea cambiar la fuente en función de la condición (que necesitaba hacer), puede hacerlo creando un adaptador de enlace personalizado.

En otras palabras, haciendo algo como esto:

public class FontBindingAdapter { @BindingAdapter({"bind:font"}) public static void setFont(TextView textView, String typefaceName){ Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont); // You''d probably want to actually use `typefaceName` to determine the font to use textView.setTypeface(typeface); }

Luego en tu diseño, así:

<TextView app:font="@{some_condition ? @string/typeface_string_name_bold: @string/typeface_string_name_bold_light}"

Utilicé esto en mi código, basado en una excelente publicación: https://plus.google.com/+LisaWrayZeitouni/posts/LTr5tX5M9mb