¿Cómo puedo hacer esto?Android obtén el tipo de vista
algo:
final View view=FLall.getChildAt(i);
if (view.getType()==ImageView) {
...
}
¿Cómo puedo hacer esto?Android obtén el tipo de vista
algo:
final View view=FLall.getChildAt(i);
if (view.getType()==ImageView) {
...
}
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 ...
Puede utilizar la etiqueta para ese propósito: vea SET/GetTag métodos en http://developer.android.com/reference/android/view/View.html
trato lo siguiente y funcionó:
View view=FLall.getChildAt(i);
Log.i("ViewName", view.getClass().getName());
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
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;
}
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
@mabeiyi si 'view instanceof ListView' es' false', significa que su vista no es 'ListView'. – Felix
@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