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

Bind with Butterknife to dynamically added view in android

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

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

这就是我膨胀自定义视图并添加到 LinearLayout 的方法

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

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

这是 child.xml,在单击按钮时动态添加到父容器。

<?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>

您可以使用 ViewHolder 将视图与存在于子布局中的 ButterKnife 绑定,因此添加内部 class 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);