Вывод editText и textViews на основе пользовательского ввода? - PullRequest
0 голосов
/ 09 июня 2018

Мне было интересно, возможно ли выводить XML-элементы, такие как editText и textView, на основе пользовательского ввода.Например, я делаю простое игровое приложение, и в нем вы попадаете на новое задание, в котором запрашивается количество игроков.Исходя из ввода (например, 5), я бы хотел отобразить editText и textView, чтобы игрокам можно было давать имена.Возможно ли это с Java и если да, то как?

1 Ответ

0 голосов
/ 09 июня 2018

Конечно, но без необходимости проходить через XML.Передайте количество игроков для следующего действия в качестве аргумента.Затем убедитесь, что у вас есть ViewGroup (например, LinearLayout) в макете второго действия.

Затем выполните цикл и динамически создайте представления:

ViewGroup container = findViewById(R.id.linearLayout);

for( int i = 0; i < numberOfPlayers; i++ ){
    EditText et = new EditText(this);
    et.setHint(R.string.new_player_hint);// String providing a hint to the user
    container.addView(et);
}

Вы можете поместить EditTexts в списокили, если это все, что у вас есть, вы можете напрямую переключаться между дочерними элементами ViewGroup, чтобы потом получить их значения:

for( int i = 0; i < container.getChildCount(); i++ ){

    String playerName = ((EditText) container.getChildAt(i)).getText().toString();

}

Если у вас будет много возможных игроков, вам следует заключить LinearLayout в ScrollView..

Поскольку вы, вероятно, будете использовать это в onCreate, помните, что вы не можете полагаться на EditText для сохранения своих собственных данных в случае, если действие уничтожено, поэтому сохраняйте их самостоятельно и возвращайте их при повторном выполнении.создание.

...