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

如何在java中动态创建XML元素?,java,android,xml,android-layout,Java,Android,Xml,Android Layout,我不熟悉java和XML,我需要知道如何使用android studio使用java创建XML元素(如TextView) 我有一个包含一些信息的arraylist,我想创建一个for循环,该循环创建包含数组信息的元素 我想会是这样的 for (int i = 0; i < myArray.size(); i++) { Element textview = document.createElement("TextView"); textView.content = myArr

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

我有一个包含一些信息的arraylist,我想创建一个for循环,该循环创建包含数组信息的元素

我想会是这样的

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

请注意,我正在一个应用程序中尝试这样做,并且已经有了一个XML文档。

这里同时有几个问题要问,但我将试一试

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

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

动态创建布局和视图是可能的,但有点冗长和不直观,因为您必须在代码中指定布局参数。例如,如果在xml布局中有一个ID为
parent
的父视图,则可以检索该父视图
LinearLayout
,并向其添加
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);
}
final LinearLayout LinearLayout=(LinearLayout)findViewById(R.id.parent);
对于(int i=0;i
这种方法的问题是,如果添加太多视图,它将无法处理滚动,并且它会随着数组的大小线性扩展内存使用量(通过为每个元素创建新的TextView)


您可能想进一步了解的是RecyclerView,它将为您提供一个可滚动的虚拟视图列表,在您滚动时智能地重用已经创建的
textView
。阅读更多关于它的信息

这里同时有几个问题要问,但我要试一试

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

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

动态创建布局和视图是可能的,但有点冗长和不直观,因为您必须在代码中指定布局参数。例如,如果在xml布局中有一个ID为
parent
的父视图,则可以检索该父视图
LinearLayout
,并向其添加
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);
}
final LinearLayout LinearLayout=(LinearLayout)findViewById(R.id.parent);
对于(int i=0;i
这种方法的问题是,如果添加太多视图,它将无法处理滚动,并且它会随着数组的大小线性扩展内存使用量(通过为每个元素创建新的TextView)


您可能想进一步了解的是RecyclerView,它将为您提供一个可滚动的虚拟视图列表,在您滚动时智能地重用已经创建的
textView
。阅读更多关于它的信息

你为什么要这样做?通常,您会直接创建
TextView
对象,并将它们添加到某个父级
ViewGroup
,而无需使用xml。为什么要这样做?通常,您可以直接创建
TextView
对象,并将它们添加到某个父级
ViewGroup
,而无需使用xml。在我目前的应用程序开发阶段,recyclerview对我来说太高级了。然而,知道滚动的事情是有用的。我宁愿使用列表视图。在我目前的应用程序开发阶段,recyclerview对我来说太高级了。然而,知道滚动的事情是有用的。我宁愿使用listview。