如何从Android中动态添加的布局捕获事件

时间:2012-04-11 11:58:13

标签: android android-layout android-widget

在我的android项目中,我需要动态地将控件添加到我的主活动屏幕中。我创建了一个xml(row.xml),它在主屏幕上单击按钮时添加。我想从row.xml中给出的控件(按钮)中捕获事件。

有人可以帮助我从新添加的布局中捕获onClick事件的位置和方法吗?

另外,我想添加许多子布局元素,是否需要为动态添加的所有子视图编写单独的onClick方法?

row.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_Time"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dip"
    android:orientation="horizontal" >


    <EditText
        android:id="@+id/editText_FromTime"
        android:layout_width="216dp"
        android:layout_height="wrap_content"
        android:focusableInTouchMode="false"
        android:hint="@string/hintFromTime" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/button_Delete"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/btnDelete" />
    </LinearLayout>

</LinearLayout>

因此,当我点击Add Time slot按钮时,我会得到一个包含两个元素的新创建的行。

我想在单击“删除”按钮时删除此行。我是否还需要一个viewID来删除这个新添加的视图?

2 个答案:

答案 0 :(得分:0)

在列表适配器中创建一个onclicklistener,并将其设置为适配器的getView方法中的按钮。这应该有用。

答案 1 :(得分:0)

您可以将控件跟踪为Java变量 - 不用担心动态的android xml。考虑在方法之外的顶部声明它们。

避免为每个控件添加新OnClickListener的一种方法是让您的类实现OnClickListener,然后使用view.setOnClickListener(this)。或者创建一个子类,它覆盖onClick(View)并使用setOnClickListener(MyListener)

只要您跟踪控件,就可以使用Layout.removeView(View)删除控件。