Search code examples
androidviewchildviews

Is there anyway to find out what type of View a View is?


So if I were to have a LinearLayout and had several children Views inside of it, say like a couple of Buttons a TextView and a CheckBox, using the LinearLayout's getChildAt(x) I would then get an unspecified View. To note, I'm not using an xml in this so it's all done programatically.

public class CustomViewClass extends LinearLayout {

    private Context context;

    public CustomViewClass (Context context) {
        super(context);
        this.context = context;
        setOrientation(LinearLayout.VERTICAL);
        setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
        setBackgroundColor(Color.DKGRAY);
        // Code which adds Buttons and such to the LinearLayout
        getChildAt(1)
    }

}

The getChildAt(1), is there anyway that I can find out what kind of View it is, whether it's a Button or a TextView or whatever progamatically?


Solution

  • One way to do this is to call getClass. This will get you a Class object representing the type of view.

    For example:

    Class clazz = getChildAt(1).getClass();
    

    After you have the class, you can do all kinds of things with it. e.g. get the name:

    System.out.println(clazz.getName());
    

    Now you know what kind of view it is.

    Another way is to use the instanceof operator. Here's an example:

    if (getChildAt(1) instanceof TexView) {
        // getChildAt(1) is a TextView or an instance of a subclass of TextView
    }