Android: создание нового ImageView при каждом нажатии кнопки

Я хочу сгенерировать и добавить новый ImageView нажатием кнопки каждый раз, когда она нажимается. Это мой код:

entwicklungskarte.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            ImageView iv = new ImageView(getApplicationContext());
            iv.setImageResource(R.drawable.erfindungek);
            ResourcenActivity.entwicklungskarten.add(iv);
        }
    });

Но когда я дважды нажимаю на кнопку, я получаю такую ​​ошибку:

java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

Я думал, что он будет создавать новый ImageView при каждом нажатии кнопки. Но это явно не так. Есть ли другой способ создать и добавить ImageView в макет нажатием кнопки?

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

Mohammad Ali 10.06.2018 12:16

Переведите весь код на английский и укажите код внутри ResourcenActivity.entwicklungskarten.add(iv).

Marc Estrada 10.06.2018 12:17
thought that it would create a new ImageView by every button click. But it obviously doesn't. Хорошо, это так. Это при добавлении, что у вас есть проблема.
greenapps 10.06.2018 12:19
0
3
647
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Объявите поле previousId в своем классе частный int previousId = 0; Вам нужно будет установить инкрементный идентификатор вашего изображения iv.

 iv.setId(++previousId);

перед

ResourcenActivity.entwicklungskarten.add(iv);

Таким образом, каждый раз соответствующего родителя просят добавить нового ребенка с другим идентификатором, чем предыдущий.

Спасибо! Это работает! Итак, раньше каждый новый вызов ImageView был новым ImageView, но с тем же идентификатором, что и предыдущие, верно?

Mekartoffel 10.06.2018 14:26
if (view != null) {
    return view; 
}

Этот вопрос будет отмечен как некачественный. Пожалуйста, предоставьте дополнительную информацию.

Wahyu Kristianto 10.06.2018 12:42

Другие вопросы по теме