首页 > 解决方案 > 如何在java中动态创建XML元素?

问题描述

我是 java 和 XML 的新手,我需要知道如何使用 android studio 使用 java 创建 XML 元素(如 TextView)。

我有一个包含一些信息的数组列表,我想创建一个 for 循环来创建包含来自数组的信息的元素。

我想它看起来像这样

for (int i = 0; i < myArray.size(); i++) {
    Element textview = document.createElement("TextView");
    textView.content = myArray.get(i);
    document.appendChild(textView);
}

请注意,我正在尝试在应用程序中执行此操作,并且已经有一个 XML 文档。

标签: javaandroidxmlandroid-layout

解决方案


这里有几个问题一次被问到,但我会试一试!

我需要知道如何使用 android studio 使用 java 创建 XML 元素(如 TextView)

您在这里谈论的“XML 元素”是Android 视图,并且在布局 xml 文件中使用 xml 标签只是告诉系统创建它们的一种方式。无论您是用 XML 表达视图还是编写 Java 代码来实例化它们,它们都将在以后成为应用程序内存中的视图对象。

动态创建布局和视图是可能的,但是冗长且有点不直观,因为您必须在代码中指定布局参数。例如,LinearLayout如果您的 xml 布局中有一个带有 ID的父级,则可以检索父级,并像这样parent向其添加一个:TextView

final LinearLayout linearLayout = (LinearLayout) findViewById(R.id.parent);
final TextView text = new TextView(this);
text.setText("Hello World");
linearLayout.addView(text);

当然,您可以循环执行此操作:

final LinearLayout linearLayout = (LinearLayout) findViewById(R.id.parent);
for (int i = 0; i < myArray.size(); i++) {
    final TextView text = new TextView(this);
    text.setText(myArray.get(i));
    linearLayout.addView(text);
}

这种方法的问题在于,如果添加太多视图,它将无法处理滚动,并且它会随着数组的大小线性扩展内存使用量(通过为每个元素创建一个新的 TextView)。

您可能想了解更多关于 RecyclerView 的内容,它会为您提供一个可滚动的虚拟视图列表TextViews,当您滚动时,它将智能地重用已创建的视图。在这里阅读更多信息!


推荐阅读