web-dev-qa-db-fra.com

Android obtenir le type de vue

Comment puis-je faire ceci?

quelque chose:

final View view=FLall.getChildAt(i);

if (view.getType()==ImageView) {
...
}
51
lacas

Si, pour une raison étrange, vous ne pouvez pas utiliser la suggestion de Asahi (en utilisant des balises), ma proposition serait la suivante:

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 ...
134
Felix

J'essaie ce qui suit et cela a fonctionné:

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

Pour les autres qui vérifient cette question, dans certains cas, instanceof ne fonctionne pas (je ne sais pas pourquoi!), Par exemple si vous souhaitez vérifier si le type de vue est ImageView ou ImageButton (j'ai testé cette situation), il les obtient de la même manière, vous pouvez donc utiliser la numérisation de cette façon:

//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; 
    }
8
Arash

Vous pouvez utiliser la balise à cet effet: voir les méthodes set/getTag sur http://developer.Android.com/reference/Android/view/View.html

6
Asahi