在我目前的春季项目中,我的一个活动应该是用户可以插入新实体的表单。活动的代码是这样的:
public class FormNewItemActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.form_new_item_view);
Intent intent = getIntent();
Dao<?> dao = intent.getStringExtra(HelloActivity.EXTRA_MESSAGE);
}
}
布局文件应该有一个EditText字段列表和一个唯一的Button,用于触发在SQLite数据库中保存数据。
我想知道它是否可能,给出一个带有实体类字段名称的字符串列表,动态生成一个xml布局文件,每个字段有一个EditText。
任何人都知道这是否真的可行,怎么办?
答案 0 :(得分:2)
您无法动态创建和加载XML布局文件。但是,您可以做的是以编程方式动态创建布局,这将产生相同的效果。此方法通过在运行时创建和添加视图到作为容器的布局(例如空LinearLayout
)来工作。在您的示例中,您将使R.layout.form_new_item_view包含空LinearLayout
<LinearLayout
android:id="@+id/container_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"/>
然后,您将在onCreate中找到容器布局
LinearLayout container = (LinearLayout) findViewById(R.id.container_layout);
然后根据需要从字段名称列表中创建并添加TextView
或EditText
for(String title: listOfTitles){
TextView field = new TextView(this);
field.setText(title);
container.addView(field);
}
要进一步自定义布局,您可以为添加的每个视图设置LayoutParams
以控制边距和其他参数。