Android中的IBOutletCollection等价物?

时间:2014-06-04 07:23:31

标签: android

iOS的IBOutletCollection是否有Android等价物?

如果是,我该如何实施呢?

在iOS中,我可以声明IBOutletCollection NSArray *myCollection,通过Interface Builder连接控件,但在Android中是否可以这样做?

2 个答案:

答案 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

中声明