与Butterknife绑定在android中动态添加视图

时间:2016-06-10 09:30:00

标签: android butterknife

如何绑定布局中存在的视图,该视图使用ButterKnife动态添加到父视图。

我有一个LinearLayout说容器。我有一个自定义布局,其中包含两个按钮,将此布局称为 childview 在活动中,我将子视图成功添加到父LinearLayout 容器

我这样做是为了给自定义视图充气并添加到LinearLayout

bubbleView = inflater.inflate(R.layout.child, null);
systemChatLayoutContainer.addView(bubbleView);

现在我想绑定布局中的Button视图 当按钮出现在布局中时,添加执行一些操作。

这是child.xml,它在Button click上动态添加到父容器。

<?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:orientation="vertical">

    <TextView
        android:id="@+id/btnCreateAccount"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/btn_selector_green"
        android:gravity="center"
        android:padding="@dimen/_13sdp"
        android:text="Create an account"
        android:textAppearance="@style/TextAppearance.AppCompat.Small"
        android:textColor="@color/white" />

    <TextView
        android:id="@+id/btnJstCheckingRate"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/btn_selector_blue"
        android:gravity="center"
        android:padding="@dimen/_13sdp"
        android:text="I'm just checking rates"
        android:textAppearance="@style/TextAppearance.AppCompat.Small"
        android:textColor="@color/white" />

    <TextView
        android:id="@+id/btnIhaveAccount"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/transparent_btn_selector"
        android:gravity="center"
        android:padding="@dimen/_20sdp"
        android:text="I've got an account"
        android:textAppearance="@style/TextAppearance.AppCompat.Small"
        android:textColor="@color/white" />
</LinearLayout>

1 个答案:

答案 0 :(得分:10)

您可以使用ViewHolder将视图与子布局中存在的ButterKnife绑定,因此添加内部类BubbleViewHolder

class BubbleViewHolder {
    BubbleViewHolder(View view) {
        ButterKnife.bind(this, view);
    }

    @OnClick(R.id.button_id)
    void onMyButtonClicked(Button myButton) {
        // Do your stuff here
    }
}

在充气后构建BubbleViewHolder

View bubbleView = inflater.inflate(R.layout.child, null);
new BubbleViewHolder(bubbleView);
systemChatLayoutContainer.addView(bubbleView);