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) 
  • ¿Cómo usar MapBuilder en kotlin y agregar todos los valores?
  • ¿Podría explicar este fragment de código en términos de código C #?
  • Cómo aplicar el tipo genérico con la interoperabilidad de Kotlin
  • Convierta Any a ArrayList en Kotlin, Retrofit
  • Juego Regex en Kotlin
  • "No se puede convertir el object de tipo java.lang.String para escribir com.android.projectrc.Listing" al usar Firebase RecyclerAdapter
  • Script de Kotlin como configuration de Gradle - pase los parameters que no usan la extensión
  • Kotlin: "val someVar = if (xx) 1 else 1.0", ¿por qué someVar es "Any"?
  • Kotlin: ¿Cuando la function de extensión oculta la implementación pnetworkingeterminada de la class?
  • ¿Qué hay de diferente entre dos constructores?
  • ¿El código más corto posible para producir una exception en Kotlin?