java – Android get type of a view-ThrowExceptions

Exception or error:

How can i do this?

something:

final View view=FLall.getChildAt(i);

if (view.getType()==ImageView) {
...
}
How to solve:

If, for some strange reason, you can’t use Asahi‘s suggestion (using tags), my proposition would be the following:

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

Answer:

I try the following and it worked:

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

Answer:

For Others who check this Question,in some cases instanceof does not work(I do not know why!),for example if your want to check if view type is ImageView or ImageButton(i tested this situation) , it get them the same, so you scan use this way :

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

Answer:

You can use tag for that purpose:see set/getTag methods at http://developer.android.com/reference/android/view/View.html

Leave a Reply

Your email address will not be published. Required fields are marked *