質問

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