iOS的IBOutletCollection是否有Android等价物?
如果是,我该如何实施呢?
在iOS中,我可以声明IBOutletCollection NSArray *myCollection
,通过Interface Builder连接控件,但在Android中是否可以这样做?
答案 0 :(得分:0)
我能找到这样做的最好方法是定义一个包含所有视图ID的静态数组。像这样:
private static int[] myViewIds = {R.id.view1, R.id.view2, ...};
然后你可以像这样轻松迭代:
for (int viewId : myViewIds) {
View myView = findViewById(viewId);
// Do stuff with myView
}
(老问题,但我想知道同样的事情,以为我会分享......)
答案 1 :(得分:-1)
当我们讨论视图绑定时,Android架构似乎与我没什么不同。
所有这些都涉及两个实体:XML布局和Activity(或Fragment)实例。
首先,您应该声明您的观点,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="true"
android:orientation="horizontal" >
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello" />
</LinearLayout>
然后在您的Activity类中有一个回调:
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
这里发生的是这一行setContentView(R.layout.activity_main);
你告诉Android你的Activity实例应该使用在R.layout.activity_main
内声明的布局。之后,在该布局中声明的所有视图都准备好进行绑定。
要将View对象与视图绑定,在布局中声明,您需要执行以下操作:
TextView tv = (TextView)findViewById(R.id.text);
这告诉Android将TextView实例绑定到视图,在R.layout.activity_main