android将小部件数组传递给另一个类并迭代它们以更改属性

时间:2011-08-01 01:54:10

标签: android class android-widget compare extends

对于android来说仍然太新,从Object-C开始minset,这是微不足道的。

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

另外a => B类扩展了TextView

A类使用B类实例。

当在B类中输入文本时,我希望迭代来自A的不同类型的小部件数组(spinner,textview等)但具有公共属性setVisibility并更改它

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

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

        for (Object o : hidObj) 
        {

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

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

但 TextView的:

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

而Spinner:

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专家的任何建议?

非常感谢提前

大卫

2 个答案:

答案 0 :(得分: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.

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

答案 1 :(得分:0)

  • setVisibility是View类的方法。
  • TextView扩展了视图
  • Spinner扩展了视图

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

你不需要施放