android - jetpack - databindingutil
Enlace de datos de Android Fallback/Valor predeterminado (3)
Debe leer la Guía de enlace de datos publicada en el sitio web de desarrolladores de Android. La última sección del documento, Soporte de Android Studio para enlace de datos, explica cómo puede usar un marcador de posición que puede ayudarlo durante la fase de diseño. Es muy sencillo:
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.firstName, default=Placeholder}"/>
Si desea tener texto con espacios como marcador de posición, puede usar comillas simples (''), comillas atrás (`) o "
android:text=''@{user.firstName, default="Placeholder text"}''
android:text="@{user.firstName, default=`Placeholder text`}"
android:text="@{user.firstName, default="Placeholder text"}"
android:text="@{user.firstName, default=@string/placeholder_text}"
Estoy usando el enlace de datos de Android que funciona muy bien:
<TextView
android:text="@{ee.Name}"
...
Pero si hago eso el diseñador de Android Studio no muestra ningún texto. Sin texto no puedo ver el TextView en absoluto. Lo cual es comprensible porque todavía no he enlazado los datos. ¿Hay algo como un valor de reserva o un valor predeterminado que se pueda mostrar hasta que haya datos reales?
Si desea ver el valor predeterminado solo en tiempo de diseño, considere usar los atributos de diseño de Designtime . Esto es útil si, por ejemplo, quiere poner valores incorrectos (por ejemplo, valores demasiado largos) y ver cómo se procesan, pero no quiere verlos en tiempo de ejecución.
Por supuesto, puede usar ambas técnicas: marcadores de posición predeterminados (mencionados por @Bandreid) y atributos de tiempo de diseño. En este caso, verá los atributos de tiempo de diseño en tiempo de diseño y los marcadores de posición en tiempo de ejecución.
El panel de vista previa muestra los valores predeterminados para las expresiones de enlace de datos.
android:text="@{user.firstName, default=PLACEHOLDER}"
Esto puede establecer el valor predeterminado.
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@{defaultString ?? @string/hello_world}"/>