如何在Java中动态创建XML元素?

时间:2019-06-09 17:46:24

标签: java android xml android-layout

我是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文档。

1 个答案:

答案 0 :(得分:0)

这里马上有几个问题要问,但我会试一下!

  

我需要知道如何使用Android Studio使用Java创建XML元素(例如TextView)

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

可以动态创建布局和视图,但是冗长且有点不直观,因为您必须在代码中指定布局参数。例如,如果您在XML布局中有一个ID为LinearLayout的父级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。详细了解here