Cómo vincular el método en RadioGroup en evento checkChanged con vinculación de datos
Yo estaba buscando en Internet para la forma de realizar la nueva androide de datos de datos vinculante sobre el RadioGroup
y no encontré una sola entrada del blog sobre él.
Su un escenario simple, basado en el botón de opción seleccionado, quiero adjuntar un evento de devolución de llamada utilizando enlace de datos de Android. No encuentro ningún método en la parte xml que me permite definir una devolución de llamada.
- Android vinculación de datos perezoso posible?
- Enlace de datos de Android - no puede invocar el controlador de clics
- Utilizar un BindingAdapter con una matriz de cadenas de los recursos
- Android: entradas en recyclerview
- Posible motivo de "Error: no se pueden generar carpetas de vista java.lang.NullPointerException"
Como aquí está mi RadioGroup:
<RadioGroup android:id="@+id/split_type_radio" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:checkedButton="@+id/split_type_equal" android:gravity="center" <!-- which tag ? --> android:orientation="horizontal"> ... </RadioGroup>
¿Cómo puedo adjuntar un método de RadioGroup
que será llamado en el evento checkChnged
se disparará mediante enlace de datos?
He intentado usar onClick
(no sé si es lo mismo) en el archivo de diseño y el método de definición en la actividad y lo encontré usando esto en el archivo de diseño:
<variable name="handler" type="com.example.MainActivity"/> ... <RadioGroup android:onClick="handler.onCustomCheckChanged" .. >
Y el método definido onCustomCheckChanged
como este:
public void onCustomCheckChanged(RadioGroup radio, int id) { // ... }
Pero, me da el error de compilación:
Error: (58, 36) Clase del oyente android.view.View.OnClickListener con el método onClick no coincide con la firma de ningún método handler.onCustomCheckChanged
He visto muchos blogs mencionando que es posible con RadioGroup
pero no de ellos realmente decir cómo. ¿Cómo puedo manejar esto con data-binding
?
- Android vinculación de datos build.gradle sincronización prob?
- Error de vinculación de datos de Android al utilizar etiqueta de inclusión con diseño de vista personalizada
- Quiero concat dos cadenas para un TextView en android, vinculación de datos Api
- Problema con gradle 2.0.0 y DataBinding
- Cómo utilizar Data Binding y Kotlin en Android Studio 3.0.0
- No se puede hacer que el complemento de enlace de datos de Android funcione
- Actividad de Android - DataBinding con preferencias
- Android Annotations y la nueva conexión de datos Android
Después de excavar en el montón de métodos, encontré esta pregunta en SO que me ayudó a entender cómo vincular los métodos individuales de los oyentes.
Esto es lo que debe hacer con RadioGroup:
En el receptor de RadioGroup
tiene un método onCheckedChanged(RadioGroup g, int id)
. Por lo tanto, puede vincular directamente ese método a su controlador o su actividad pasando una instancia de él como una variable en el archivo de diseño y llamando a un método con la misma firma.
Así que llame al archivo de diseño como este:
<RadioGroup android:id="@+id/split_type_radio" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:checkedButton="@+id/split_type_equal" android:gravity="center" android:onCheckedChanged="@{handler.onSplitTypeChanged}" android:orientation="horizontal"> ... </RadioGroup>
Y en mi actividad o manejador, necesito simplemente proveer el método con el mismo nombre y firma como esto:
public void onSplitTypeChanged(RadioGroup radioGroup,int id) { // ... }
Sólo asegúrese de que el método es público.
NOTA: Esto funciona para cualquiera (la mayoría de, no he probado todos) los métodos de escucha. Al igual que para EditText
puede proporcionar android:onTextChanged
y así sucesivamente.
- Efectos de transición de la actividad: deslice hacia la actividad superior y la escala para la actividad de la parte inferior
- Android no reproduce vídeo .mp4