简体   繁体   中英

Cast Class object to EditText in Android?

public void changeCurrency(RelativeLayout layout) {
    for (int i = 0; i < layout.getChildCount(); i++) {
        View v = layout.getChildAt(i);
        Class c = v.getClass();
        if (c == EditText.class) {
            // validate EditClass
        } else if (c == TextView.class) {
            //validate RadioButton
        } 
    }
}

In the above code I'm trying to iterate through gui elements in a layout and validate their contents. I'm struggling at the commented parts.

Ie getting access to the EditText's text value..

I can't figure out how to cast the c object to a EditText to check the values.

Ideas?

Try using the logic below

View v = layout.getChildAt(i);

if (v instanceof EditText) {
    EditText et = (EditText) v;

    //Do stuff

} else if (v instanceof TextView) {

    //Do other stuff

}

Since EditText is a subclass of TextView , you need to check for EditText first. An EditText will test positive as an instance of TextView .

Most of the views that use text extend from TextView. This should be sufficient if all you are doing is validating text.

public void changeCurrency(RelativeLayout layout) {
    for (int i = 0; i < layout.getChildCount(); i++) {
        View v = layout.getChildAt(i);
        if (v instanceof TextView) {
            TextView t = (TextView) v;
            String text = t.getText().toString();
            // ...
        }
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM