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
Desafortunadamente, el enlace de datos no es compatible con los estilos: https://code.google.com/p/android-developer-preview/issues/detail?id=2613