对于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专家的任何建议?
非常感谢提前
大卫
答案 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)
- &GT;传递一个View数组,数组的每个项都有方法setVisibility
你不需要施放