Мое приложение предназначено для создания опросов. Для этого пользователь должен иметь возможность создавать новые поля динамически.Наложение вида несколько раз на одного родителя при нажатии кнопки
Итак, при создании нового опроса активность отображается только с двумя кнопками (добавление и удаление). Когда пользователь нажимает кнопку добавления, появляется строка, содержащая EditText (чтобы он мог написать вопрос), Spinner (который позволяет пользователю выбирать тип поля: текст, RadioButton, CheckBox и т. Д.) И другой EditText (в котором записаны различные доступные варианты ответа, если это применимо).
Для этого я создал файл XML, содержащий эти виджеты, и каждый раз, когда пользователь нажимает кнопку добавления, XML раздувается. Он работает в первый раз, когда я нажимаю кнопку, но после этого ... ничего не происходит.
Я где-то читал, что вы не можете раздуть одного ребенка 2 раза в родительском, если это не сделано в цикле.
Итак, мои вопросы:
-> Как я могу обойти эту проблему и получить желаемый эффект?
-> Почему это не применяется в Loop?
Любая помощь или подсказка оцениваются. Еще раз большое спасибо за всю поддержку, оказанную моим сообществом.
ПРИМЕЧАНИЕ. В документации по андроидному оборудованию они говорят о клонировании инфлятора, но информации там мало, и я не мог найти никакой другой информации об этом.
исходный код:
XML - Главная cointainer:
<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);
Вы можете раздуть одного и того же ребенка два или более раз. То, что вы не можете сделать, это использовать один и тот же экземпляр вида несколько раз. Каждый раз, когда вы вызываете метод `inflate`` LayoutInflater`, вы создаете новый `View`, поэтому у вас не должно быть проблем с тем, как вы делаете. Итак ... может быть, ошибка в другом месте ... Не могли бы вы поделиться файлами XML (контейнер и тот, который завышен во время исполнения)? Кроме того, будет полезен фрагмент кода, в котором вы раздуваете представление. – Cristian 2010-11-29 00:46:09
Отредактировано сообщение, чтобы включить то, что вы просили! (спасибо за вашу помощь!) – Tivie 2010-11-29 00:55:59