Android получить тип представления - PullRequest
50 голосов
/ 07 ноября 2010

Как я могу это сделать?

что-то:

final View view=FLall.getChildAt(i);

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

Ответы [ 4 ]

133 голосов
/ 07 ноября 2010

Если по какой-то странной причине вы не можете использовать предложение Asahi (с использованием тегов), мое предложение будет следующим:

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 ...
15 голосов
/ 26 июня 2011

Я пробую следующее, и это сработало:

View view=FLall.getChildAt(i);
Log.i("ViewName", view.getClass().getName());
8 голосов
/ 25 марта 2014

Для тех, кто проверяет этот Вопрос, в некоторых случаях instanceof не работает (я не знаю почему!), Например, если вы хотите проверить, является ли тип представления ImageView или ImageButton (я проверял этоситуации), они получаются одинаковыми, поэтому сканирование выполняется следующим образом:

//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; 
    }
5 голосов
/ 07 ноября 2010

Вы можете использовать тег для этой цели: см. Методы set / getTag в http://developer.android.com/reference/android/view/View.html

...