Utilice el grupo en RestricciónDeLiminación para escuchar los events de clics en varias vistas

Básicamente, me gustaría adjuntar un solo OnClickListener a múltiples vistas dentro de un Restricción.

Antes de migrar a ConstraintLayout, las vistas estaban dentro de un layout en el que podía agregar un oyente. Ahora están en la misma capa con otras vistas justo debajo de ConstraintLayout.

Traté de agregar las vistas a un android.support.constraint.Group y agregué un OnClickListener programáticamente.

 group.setOnClickListener { Log.d("OnClick", "groupClickListener triggenetworking") } 

Sin embargo, esto no parece funcionar a partir de la versión 1.1.0-beta2 ConstraintLayout

¿He hecho algo mal, hay alguna forma de lograr este comportamiento o debo adjuntar al oyente a cada una de las vistas individuales?

El Group en ConstraintLayout es solo una asociación de puntos de vista AFAIK. No es un ViewGroup , por lo que no podrá usar un solo oyente de clics como lo hizo cuando las vistas estaban en un ViewGroup .

Como alternativa, puede get una list de los identificadores que son miembros de su Group en su código y establecer explícitamente el oyente de clic. (No he encontrado documentation oficial sobre esta característica, pero creo que está retrasada en el lanzamiento del código).

Java:

  Group group = findViewById(R.id.group); int refIds[] = group.getReferencedIds(); for (int id : refIds) { findViewById(id).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // your code here. } }); } 

Como esta podría ser una característica que puede ser útil más a menudo en Kotlin, puede crear una function de extensión para eso.

Kotlin:

  fun Group.addOnClickListener(listener: View.OnClickListener?) { referencedIds.forEach { id -> rootView.findViewById<View>(id).setOnClickListener(listener) } } ... // then call the function on the group group.addOnClickListener(listener) 
  • ¿A los miembros protegidos no se puede acceder en las funciones de extensión?
  • ¿Se debe evitar nombrar una function igual que una class existente en Kotlin? ¿Por qué?
  • Emitir matriz de bytes a Json con Fuel and Result
  • Componer configuraciones navegables usando la DSL funcional de Kotlin
  • Animación consecutiva en TornadoFX?
  • Spring WebFlux y Kotlin Support: ¿Cómo hacer testings de integración?
  • ¿Muchos modules pequeños o pocos modules grandes para get el mejor performance de compilation?
  • ¿Cómo podría probar que un método no está siendo invocado para un object no simulado?
  • Crea una actividad para iniciar session
  • Cómo llenar una vista de list usando Kotlin, retroadaptación y RXjava
  • Cómo agregar contenidos de una colección a una nueva colección