2011-07-26 17 views
20

¿Es posible encontrar una vista por su nombre en lugar de su identificación.Buscar vista por nombre

findViewById(R.id.someView); 

pero me gustaría hacer algo como esto:

findViewByName("someView"); 
+0

Posible duplicado de [¿Cómo obtengo el ID de recurso de una imagen si sé su nombre?] (Http://stackoverflow.com/questions/3042961/how-do-i-get-the-resource-id -of-an-image-if-i-know-its-name) – ACBM

Respuesta

51

usted tiene que encontrar puntos de vista de identificador cuando se trata de XML, pero se puede buscar el identificador utilizando getIdentifier(String name, ...) que es útil si usted tiene sus diseños numerados, por ejemplo. Solo tenga en cuenta que tal búsqueda es relativamente costosa.

para completar la respuesta

int id = getResources().getIdentifier(name, "id", context.getPackageName()); 
View view = findViewById(id); 
-1

No, no hay tales métodos. Tengo curiosidad de por qué necesitarías ese método.

+0

Me gustaría llenar un montón de etiquetas que se colocan en la vista. Ahora recibo una lista de datos con nombres únicos. Puedo buscar la etiqueta apropiada con este nombre y llenarla. Por lo tanto, la posición de la etiqueta no cambiará y puedo ocultar los que no están llenos. – Drejc

0

Sí, también podemos encontrar cualquier recurso estático por su nombre.

int id = getResources().getIdentifier(name, "id", context.getPackageName()); 
View view; 
if(id != 0) { 
    view = findViewById(id); 
} 

getResources(). Identifier devolverá 0 siempre si no se encuentra el recurso o el nombre no coincide.

+1

¿Y cómo es esto diferente de @MrJre? ... no llene el sitio con duplicados. – Drejc

Cuestiones relacionadas