为从远程数据库接收的表单创建动态布局。
这是我的方法:
val constraintLayout: ConstraintLayout = findViewById(R.id.constraintLayout)
val constraintSet = ConstraintSet()
var createdViews: ArrayList<View> = ArrayList()
//parse fields to appropiate view
formFields.forEach{
var view: View? = null
when(it.type) {
"textField" -> {
view = EditText(this)
//view.hint = it.hint
}
"checkBox" -> {
view = CheckBox(this)
//view.isChecked = it.isChecked
}
}
view!!.tag = it.id
view.visibility = View.VISIBLE
views.add(view)
constraintLayout.addView(view)
}
//set constraints for these views
var previousItem: View? = null
constraintSet.clone(constraintLayout);
createdViews!!.forEach{
if (previousItem == null) {
constraintSet.connect(
it.id,
ConstraintSet.TOP,
ConstraintSet.PARENT_ID,
ConstraintSet.TOP
)
} else {
constraintSet.connect(
it.id,
ConstraintSet.TOP,
previousItem!!.id,
ConstraintSet.BOTTOM
)
}
previousItem = it
}
constraintSet.applyTo(constraintLayout)
我无法创建视图列表,因为var createdViews:ArrayList = ArrayList()似乎不起作用 也可能有更好的方法来像这样以编程方式创建表单。我将很乐意提供任何建议