Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android数据绑定动态addView_Android - Fatal编程技术网

Android数据绑定动态addView

Android数据绑定动态addView,android,Android,我有两个布局xmlA和B Axml中id为“layout”的线性布局 现在我想使用layout.addView() 如果要使用布局xml执行相同的操作,如何使用数据绑定。像这样使用include控件: <include layout="@layout/header_logo_lyt" //Name of xml you want to include/> 我认为这不是最佳实践,但下面是我如何使用数据绑定动态添加视图的方法 在布局A中,我有一个FrameLayout如下: <

我有两个布局xmlAB

Axml中id为“layout”的线性布局

现在我想使用
layout.addView()


如果要使用布局xml执行相同的操作,如何使用
数据绑定

。像这样使用include控件:

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

我认为这不是最佳实践,但下面是我如何使用
数据绑定动态添加视图的方法

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

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    bind:createView="@{viewModel.dynamicViews}">
我在这里有我的替换布局:

public LinearLayout getDynamicViews() {
    LinearLayout layout = new LinearLayout(mContext);
    // dynamically add views here. This could be your layout B.
    return layout;
}
我找不到任何其他解决方案,这对我来说很好。请给我任何意见,我愿意学习更好的解决方案

addView(databinding.getRoot())

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


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

Include不是数据绑定我认为这比最高级的答案要好,因为视图模型应该创建数据,并且不引用上下文,这意味着在视图模型中拥有视图是不可能的,因此,我们必须回到旧的直接方法,在哪个类中添加了getDynamicView()方法?好奇是因为它使用上下文。
public LinearLayout getDynamicViews() {
    LinearLayout layout = new LinearLayout(mContext);
    // dynamically add views here. This could be your layout B.
    return layout;
}