java - 如何在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 文档。
解决方案
这里有几个问题一次被问到,但我会试一试!
我需要知道如何使用 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
,当您滚动时,它将智能地重用已创建的视图。在这里阅读更多信息!
推荐阅读
- flutter - Moor Vs ObjectBox:用于复杂的 Flutter DB
- reactjs - 用猫鼬的值改变静态值
- api - 创建 Vend API 的初始步骤
- javascript - 如何在每次使用 JavaScript 的操作后叠加显示翻译结果容器?
- javascript - javascript中赋值表达式周围的括号有什么意义
- classification - 我有一个问题出现这个警告:分类器'AuthResult'没有伴随对象,因此必须在此处初始化
- javascript - Firefox javascript 控制台 - 是否可以从文件中执行 javascript?
- flutter - Refresh firebase token Flutter and RESTfull API
- php - 翻译和调整预计发货日期
- sql - 每天的运行总和