Android数据绑定动态addView
我有两个布局xmlA和B Axml中id为“layout”的线性布局 现在我想使用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如下: <
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;
}