Раздувать строки динамически, но странное поведение при изменении ориентации устройства
Я пытаюсь динамически раздувать свои строки, но когда я изменяю ориентацию планшета, я получаю все, что не выбрано, и имя флажка заполняется информацией о последней строке. Например, предположим, что у меня есть два флажка (две строки), первый из которых говорит "Привет", а второй - "до свидания". Если я поверну планшет, то получу первый и второй флажки с названием "good bye" и все, что не выбрано.
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<TableLayout
android:id="@+id/tableLayoutList"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</ScrollView>
Моя строка определена следующим образом (мровлаут.xml):
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayoutRow"
android:layout_width="match_parent"
android:layout_height="match_parent">
<CheckBox
android:id="@+id/checkBoxServEmail"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</TableRow>
А затем я использую следующий код для раздувания моей строки:
private void fillTable(View v, Cursor c) {
TableLayout ll = (TableLayout) v.findViewById(R.id.tableLayoutList);
View mTableRow = null;
int i = 0;
while(!c.isAfterLast()){
i++;
mTableRow = (TableRow) View.inflate(getActivity(), R.layout.mRowLayout, null);
CheckBox cb = (CheckBox)mTableRow.findViewById(R.id.checkBoxServEmail);
Log.e("debugging", "email: "+c.getString(c.getColumnIndex(Serv.EMAIL)));
cb.setText( c.getString(c.getColumnIndex(Serv.EMAIL)));
mTableRow.setTag(i);
//add TableRows to TableLayout
ll.addView(mTableRow);
c.moveToNext();
}
}
Кто-нибудь знает, почему у меня такое странное поведение?. Также обратите внимание, что я положил бревно.e для печати в моем журнале Кот Что происходит. И я получаю "привет" и "до свидания" каждый раз, когда меняю ориентацию своего устройства, но текст, похоже, не работает должным образом.
Пожалуйста, помогите, я был с этим вопросом в течение нескольких часов, и я не понимаю его : (
1 ответ:
Действие уничтожается и воссоздается при изменении ориентации устройства. Вы должны использовать
onSaveInstanceState
Обратный вызов для сохранения текущих данных пользовательского интерфейса. И используйте onCreate, чтобы восстановить его:
if (savedInstanceState == null) { // first run } else { // not first run }