0
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
        } 
    }
}

在上面的代码中,我试图遍历布局中的 gui 元素并验证它们的内容。我在评论部分苦苦挣扎。

即访问EditText的文本值..

我不知道如何将 c 对象转换为 EditText 以检查值。

想法?

4

2 回答 2

4

尝试使用下面的逻辑

View v = layout.getChildAt(i);

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

    //Do stuff

} else if (v instanceof TextView) {

    //Do other stuff

}

由于EditText是 的子类TextView,因此您需要先检查EditText。AnEditText将作为 的一个实例测试为阳性TextView

于 2014-02-09T02:38:18.960 回答
1

大多数使用文本的视图都是从 TextView 扩展而来的。如果您所做的只是验证文本,这应该就足够了。

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();
            // ...
        }
    }
}
于 2014-02-09T02:35:58.917 回答