0

对 android 来说还是太新了,从 Object-C 开始,这是微不足道的。

我有一个带有几个小部件的 A 类

还有一个 => Class B 扩展了 TextView

A 类使用 B 类的实例。

当在 B 类中输入文本时,我想遍历 A 中不同类型(微调器、文本视图等)但具有共同属性 setVisibility 的小部件数组并更改它

所以在 A 类中,在创建字段成员 B 类之后,我将一个带有两个小部件的对象数组传递给它(到 B 类)

所以,天真地,我尝试了几种带有强制转换的 for 循环变体,例如(到目前为止只没有给出错误,但有一个问题:

        for (Object o : hidObj) 
        {

            Class c=o.getClass(); //.setVisibility=1;
            if (c.getSuperclass()==android.view.View.class){};
        }

问题:在这种情况下,hidObj 数组包含 TextView 和一个 Spinner(我希望它适用于其他活动)

但是文本视图:

java.lang.Object
   ↳    android.view.View
       ↳    android.widget.TextView

而微调器:

java.lang.Object
   ↳    android.view.View
       ↳    android.view.ViewGroup
           ↳    android.widget.AdapterView<T extends android.widget.Adapter>
               ↳    android.widget.AbsSpinner
                   ↳    android.widget.Spinner

所以马上就行不通了。

Android/Java 大师有什么建议吗?

提前谢谢了

大卫

4

2 回答 2

0
  • setVisibility 是 View 类中的一个方法。
  • TextView 扩展视图
  • Spinner 扩展视图

-> 传递一个View数组,数组的每一项都有setVisibility方法

你不需要投射

于 2011-08-01T03:54:13.490 回答
0

在这种特殊情况下,setVisibility()您要调用的常用方法是常见的,因为它是从View. 您应该利用标准 Java 语言和继承,因此:

View view;
view = findViewById(R.id.somename); // Can be any kind of View (TextView, Spinner, etc).
view.setVisibility(true); // or false depending on your needs.

现在,如果您想检查您不知道其层次结构的任何特定对象,那么您必须使用反射。请参阅使用 Java 反射;您将对“按名称调用方法”部分感兴趣。

于 2011-08-01T03:42:33.583 回答