Мое приложение о создании опросов.Для этого пользователь должен иметь возможность динамически создавать новые поля.
Таким образом, при создании нового опроса активность отображается только с 2 кнопками (добавить и удалить).Когда пользователь нажимает кнопку добавления, появляется строка, содержащая EditText (чтобы он мог написать вопрос), Spinner (который позволяет пользователю выбрать тип поля: текст, RadioButton, CheckBox и т. Д.) И другой EditText (в котором записаны различные доступные варианты ответов, если применимо).
Для этого я создал файл XML, содержащий эти виджеты, и каждый раз, когда пользователь нажимает кнопку добавления, XML раздувается.Это работает при первом нажатии кнопки, но после этого ... ничего не происходит.
Я где-то читал, что вы не можете раздувать одного и того же ребенка 2 раза в родительском элементе, если это не сделано в цикле.
Итак, мои вопросы:
-> Как мне обойти это и получить желаемый эффект?
-> Почему это не применяется в цикле?
Любая помощь или подсказка приветствуется.Еще раз, большое спасибо за всю поддержку, которую сообщество оказало мне.
ПРИМЕЧАНИЕ. В документации Android говорится о клонировании инфлятора, но информации там мало, и я не смог найти другую информациюоб этом.
Код источника:
XML - Основной монетодержатель:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:id="@+id/wrapper"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/mds_new_addfield_button"
android:tag="new"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Add Field"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
/>
<Button
android:id="@+id/mds_new_deletefield_button"
android:tag="delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Delete Field"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
/>
</RelativeLayout>
XML-Inflated:
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TableRow>
<TextView
android:id="@+id/mdsnew_field_tv"
style="@style/dsn_field"
android:text="Field Name "
/>
<TextView
android:id="@+id/mdsnew_type_tv"
style="@style/dsn_field"
android:text="Type of Field "
/>
<TextView
android:id="@+id/mdsnew_choices_tv"
style="@style/dsn_field"
android:text="Choices"
/>
</TableRow>
<TableRow>
<EditText
android:id="@+id/mdsnew_fieldname_et"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Field Name"
android:textSize="18sp"
/>
<Spinner
android:id="@+id/mdsnew_type_sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<EditText
android:id="@+id/mdsnew_choices_et"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Choices "
android:textSize="18sp"
/>
</TableRow>
</TableLayout>
Кнопка добавления:
LinearLayout myRoot = (LinearLayout) findViewById(R.id.wrapper);
LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.mds_new_row, myRoot);