复制视图时如何获取对每个视图重复的引用?

时间:2014-10-26 12:38:45

标签: java android

我有一个隐藏的布局。

add_event_price.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/add_event_price_layout"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp">

    <EditText android:id="@+id/add_event_wording"
        android:layout_width="0dp"
        android:layout_weight="2"
        android:layout_height="wrap_content"
        android:hint="@string/event_wording_hint" />

    <EditText android:id="@+id/add_event_price"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:inputType="number"
        android:hint="@string/event_price_hint" />

    <ImageButton android:id="@+id/add_event_cross"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:src="@drawable/cross"
        android:background="@null"
        android:layout_gravity="center_vertical"
        android:contentDescription="@string/delete" />

</LinearLayout>

单击主布局中的按钮时,将显示隐藏的布局。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="@color/app_background_color">

    <LinearLayout 
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <LinearLayout android:id="@+id/add_event_dynamic"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

        </LinearLayout>

        <Button android:id="@+id/add_event_add_field"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@null"
            android:text="@string/add_event_add_field" />
    </LinearLayout>

</ScrollView>

add_event_add_field.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        LinearLayout priceLayout = (LinearLayout) rootView.findViewById(R.id.add_event_price_layout);
        LinearLayout dynamicLayout = (LinearLayout) rootView.findViewById(R.id.add_event_dynamic);
        View hidden = inflater.inflate(R.layout.add_event_price, priceLayout, false);
        dynamicLayout.addView(hidden);
    }
});

动态添加隐藏布局但我不知道如何在隐藏布局中检索EditText的值,并在单击相应的add_event_cross ImageButton时删除视图。

1 个答案:

答案 0 :(得分:0)

首先,您可以在dynamicLayout上调用findViewById:

EditText et = (EditText) dynamicLayout.findViewById(R.id.add_event_wording);

其次,我建议不要通过添加视图来显示/隐藏布局。只需将dynamicLayout放入主布局中,然后使用:

dynamicLayout.setVisibility(LinearLayout.GONE); //makes the layout hidden

我没有测试过代码,但你可以在它上面构建。