Android DataBinding动态addView

时间:2015-07-16 06:30:43

标签: android

我有两个布局xml A B

A xml中的线性布局,ID为'布局'

现在我想使用layout.addView()

在布局中添加 B

如何使用databinding

执行此操作

3 个答案:

答案 0 :(得分:8)

我认为这不是最佳做法,但我在databinding动态添加视图的方式如下。

在布局A中,我有一个FrameLayout,如下所示:

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    bind:createView="@{viewModel.dynamicViews}">

在我的viewModel课程中,我有一个带BindingAdapter注释的静态方法,

@BindingAdapter("bind:createView")
public static void createImproveView(FrameLayout layout, LinearLayout replacement) {
    layout.removeAllViews();
    layout.addView(replacement);
}

我在这里有替换布局:

public LinearLayout getDynamicViews() {
    LinearLayout layout = new LinearLayout(mContext);
    // dynamically add views here. This could be your layout B.
    return layout;
}

我无法找到任何其他解决方案,这对我来说很好。请给我任何评论,我愿意学习更好的解决方案!

答案 1 :(得分:0)

如果你想使用布局xml做同样的事情。像这样使用include控件:

<include layout="@layout/header_logo_lyt" //Name of xml you want to include/>  

答案 2 :(得分:0)

addView(databinding.getRoot())
您可以看到getRoot()返回View个实例,因此您可以通过此方法addView

此数据绑定是您要添加的视图的数据绑定实例。