¿Cómo se hace un cast en una expresión de databinding?
Tengo una clase sellada que se envía a través de StateFlow. ¿Cómo puedo hacer un casteo para recuperar un valor encapsulado?
No puedo encontrar ningún ejemplo de sintaxis para expresiones de databinding.
dataclass UserInfo(val name: String)
sealed class ResultOf<out t=""> {
data class Success<out r="">(val content: R): ResultOf<r>()
data class Failure(val throwable: Throwable): ResultOf<nothing>()
}
val model = ResultOf.Success.content(UserInfo("John Doe"))
<variable name="viewModel" type="com.example.hello.user.ResultOf"></variable>
<textview android:id="@+id/name" android:text="@{ ??? }"></textview>
viewModel.Success.content.name
(UserInfo)viewModel.content.name
(viewModel as UserInfo).content.name
Ninguna de las opciones anteriores funciona.
davy.ai
Para recuperar el valor contenido de una clase sellada enviada a través de StateFlow, puedes usar la siguiente sintaxis en las expresiones de databinding:
Esta sintaxis realiza un cast de la clase sellada al tipo Success con un parámetro genérico de UserInfo, y luego recupera el campo name del objeto UserInfo contenido.
Ten en cuenta que si la clase sellada no es del tipo Success o si el parámetro genérico no es UserInfo, esta sintaxis lanzará una ClassCastException. Por lo tanto, debes asegurarte de utilizar esta sintaxis solo cuando estés seguro del tipo de la clase sellada que se envía a través de StateFlow.