sólo voy a dar esta respuesta como una alternativa @ algoritmo recursivo de IHeartAndroid para descubrir todo niño View
s en una jerarquía de vistas. Tenga en cuenta que en el momento de escribir esto, , la solución recursiva está defectuosa, ya que contendrá duplicados en su resultado.
Para aquellos que tienen problemas para resolver recursiones, aquí hay una alternativa no recursiva. Obtiene puntos de bonificación por darse cuenta de que esta también es una alternativa de búsqueda que amplía la anchura al primer profundidad-primero enfoque de la solución recursiva.
private List<View> getAllChildrenBFS(View v) {
List<View> visited = new ArrayList<View>();
List<View> unvisited = new ArrayList<View>();
unvisited.add(v);
while (!unvisited.isEmpty()) {
View child = unvisited.remove(0);
visited.add(child);
if (!(child instanceof ViewGroup)) continue;
ViewGroup group = (ViewGroup) child;
final int childCount = group.getChildCount();
for (int i=0; i<childCount; i++) unvisited.add(group.getChildAt(i));
}
return visited;
}
Un par de pruebas rápidas (nada formal) sugieren que esta alternativa es también más rápido, a pesar de que tiene más probable es que ver con el número de nuevos casos ArrayList
crea la otra respuesta. Además, los resultados pueden variar en función de cuán vertical/horizontal sea la jerarquía de vistas.
Cruz-registrado desde: Android | Get all children elements of a ViewGroup
¿Cuál es el La mejor manera de hacer esto recursivamente y así generar una vista jerárquica objeto JSON? – jimbob