2010-11-07 18 views

Respuesta

114

Si, por alguna extraña razón, no se puede utilizar sugerencia Asahi 's (el uso de etiquetas), mi propuesta sería la siguiente:

if (view instanceof ImageView) { 
    ImageView imageView = (ImageView) view; 
    // do what you want with imageView 
} 
else if (view instanceof TextView) { 
    TextView textView = (TextView) view; 
    // do what you want with textView 
} 
else if ... 
+0

No funciona para ListView. Y tengo que crear otra CustomListView personalizada que amplíe ListView para que pueda usar (ver instancia de CustomListView). ¿Hay alguna manera de saber el tipo cuando es ListView? Gracias. – mabeiyi

+4

@mabeiyi si 'view instanceof ListView' es' false', significa que su vista no es 'ListView'. – Felix

+0

@Felix: en realidad, si tiene un ListView y ha configurado "singleChoice", devolverá un nombre de clase de "android.widget.CheckedTextView". Esto me acaba de mordir. Esto hace esto bajo las sábanas. :( – PAntoine

12

trato lo siguiente y funcionó:

View view=FLall.getChildAt(i); 
Log.i("ViewName", view.getClass().getName()); 
+0

Estoy usando un TextView para establecer el estilo de un spinner (enlace en este ejemplo: http://developer.android.com/resources/tutorials/views/hello-spinner.html). También estoy utilizando el onItemSelected método de evento para el spinner. El evento continuó disparando con una vista que no reconocí. Usando su método anterior - v.getClass(). getName() - Pude determinar que la Vista se pasó al evento es el TextView que estoy usando para los estilos. – jwatts1980

8

para otros que marca esta pregunta, en algunos casos instanceof no funciona (no sé por qué!), Por ejemplo, si tu quieres comprobar si el tipo de visualización es ImageView o ImageButton (he probado esta situación) , los obtienen de la misma manera, por lo que escanea de esta manera:

//v is your View 
    if (v.getClass().getName().equalsIgnoreCase("android.widget.ImageView")) { 
     Log.e("imgview", v.toString()); 
     imgview = (ImageView) v; 
    } else if (v.getClass().getName().equalsIgnoreCase("android.widget.ImageButton")) { 
     Log.e("imgbtn", v.toString()); 
     imgbtn = (ImageButton) v; 
    } 
Cuestiones relacionadas