从编程添加的视图中获取数据

时间:2011-12-27 18:15:02

标签: java android

有人能帮助我吗?

例如,有以下布局:

main.xml中:

<LinearLayout
    android:id="@+id/linearLayout_item"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/linearLayout_item_name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <EditText
                android:id="@+id/editText_item_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

        ... Other views, skipped ...

    </LinearLayout>
    <Button
        android:id="@+id/button_add_alias"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/button_commit" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

我使用button_add_alias根据需要添加视图。

((Button) findViewById(R.id.button_add_alias))
        .setOnClickListener(new View.OnClickListener() {
            int position = 1;
            public void onClick (View v) {
                View view = getLayoutInflater().inflate(R.layout.alias, null);
                ((LinearLayout) findViewById(R.id.linearLayout_item)).addView(view, position);
                position++;
            }
    });

ALIAS.XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout_alias"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <EditText
        android:id="@+id/editText_alias"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

    ... Other views, skipped ...

</LinearLayout>

那么,从编程方式添加editText_alias视图获取数据的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

如果我了解您要抓取编辑文本的目的,您应该可以调用

view.findViewById(R.id.editText_alias)

答案 1 :(得分:0)

首先,使用getChildAt()遍历LinearLayout。 然后,从您的子视图中检索第一个孩子(在您的情况下将是EditText)。

LinearLayout parent = (LinearLayout) findViewById(R.id.linearLayout_item);

for (int i = 0; i != parent.getChildCount(); i++) {
   if (parent.getChildAt(i).getId() == R.id.linearLayout_alias) {
       LinearLayout alias = (LinearLayout) parent.getChildAt(i);
       EditText editAlias = (EditText) alias.getChildAt(0);

       // do what you want with the EditText
   }
}