Вопрос

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.

I.e. 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();
            // ...
        }
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top