2010-11-07 13 views

Antwort

114

Wenn aus irgendeinem seltsamen Grund nicht Asahi ‚s Vorschlag verwenden können (mit Tags), mein Vorschlag folgend wäre:

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

Es funktioniert nicht für ListView. Und ich muss eine andere benutzerdefinierte CustomListView erstellen, die ListView erweitert, so dass ich (instanceof CustomListView anzeigen) verwenden kann. Gibt es eine Möglichkeit, den Typ zu kennen, wenn es ListView ist? Vielen Dank. – mabeiyi

+4

@mabeiyi Wenn 'view instanceof ListView'' false' ist, bedeutet dies, dass Ihre Ansicht keine 'ListView' ist. – Felix

+0

@Felix - tatsächlich, wenn Sie eine ListView haben und Sie haben "singleChoice" dann gibt es einen Klassennamen von "android.widget.CheckedTextView". Das hat mich nur umgehauen. Dies tut dies unter den Deckeln. :( – PAntoine

12

ich versuche, die folgenden und es funktionierte:

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

Ich verwende eine TextView, um den Stil für einen Spinner festzulegen (Link in diesem Beispiel: http://developer.android.com/resources/tutorials/views/hello-spinner.html). Ich verwende auch die onItemSelected Ereignis Methode für den Spinner Das Ereignis ausgelöst Triggerung mit einer Ansicht, die ich nicht erkannt.Verwenden Sie Ihre Methode oben - v.getClass(). getName() - Ich konnte feststellen, dass die Ansicht an das Ereignis übergeben wird ist der TextView, den ich für die Stile verwende. – jwatts1980

8

Für andere, die diese Frage prüfen, in einigen Fällen instanceof nicht funktionieren (ich weiß nicht, warum!), Zum Beispiel, wenn Ihr Mangel zu überprüfen, ob Ansichtsart ImageView oder ImageButton ist (i diese Situation getestet) , erhalten Sie die gleichen, so dass Sie auf diese Weise scannen:

//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; 
    } 
Verwandte Themen