Я хочу сгенерировать и добавить новый 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 в макет нажатием кнопки?
Переведите весь код на английский и укажите код внутри ResourcenActivity.entwicklungskarten.add(iv).
thought that it would create a new ImageView by every button click. But it obviously doesn't. Хорошо, это так. Это при добавлении, что у вас есть проблема.
Объявите поле previousId в своем классе частный int previousId = 0; Вам нужно будет установить инкрементный идентификатор вашего изображения iv.
iv.setId(++previousId);
перед
ResourcenActivity.entwicklungskarten.add(iv);
Таким образом, каждый раз соответствующего родителя просят добавить нового ребенка с другим идентификатором, чем предыдущий.
Спасибо! Это работает! Итак, раньше каждый новый вызов ImageView был новым ImageView, но с тем же идентификатором, что и предыдущие, верно?
if (view != null) {
return view;
}
Этот вопрос будет отмечен как некачественный. Пожалуйста, предоставьте дополнительную информацию.
Почему бы не использовать просмотр в виде списка и с изображением в записях, и не добавлять в него элементы