Как динамически создавать XML-элементы в Java? - PullRequest
0 голосов
/ 09 июня 2019

Я новичок в Java и XML, и мне нужно знать, как создавать элементы XML (например, TextView) с использованием Java с помощью Android Studio.

У меня есть массив с некоторой информацией, и я хочусоздайте цикл 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 голосов
/ 09 июня 2019

Здесь сразу задают несколько вопросов, но я попробую!

Мне нужно знать, как создавать элементы XML (например, TextView) с помощью Java с помощью Android Studio

"XML-элементы", о которых вы здесь говорите: Представления Android , и использование XML-тегов в XML-файле макета - это всего лишь один из способов сообщить системе, что они создаются. Независимо от того, выражаете ли вы представления в XML или пишете код Java для их создания, они позже станут объектами View в памяти вашего приложения.

Динамическое создание макета и представлений возможно, но многословно и немного неинтуитивно, потому что вы должны указать параметры макета в коде. Например, вы можете извлечь родительский элемент LinearLayout, если он есть в макете xml с идентификатором 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 при прокрутке. Подробнее об этом здесь !

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...