У меня возникла странная проблема с заменой строки таблицы из кода.
Мой XML-код выглядит так:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/columnheadings"
android:layout_height="wrap_content"
android:layout_width="fill_parent"/>
<ListView
android:id="@+id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:dividerHeight="2px"
/>
...
</LinearLayout>
Когда действие создано, я могу успешно вставить TableRowв TableLayout «columnheads»:
table = (TableLayout)findViewById(R.id.columnheadings);
table.removeAllViews();
TableRow tr = new TableRow(this);
TextView tv = new TextView(activity);
tv.setText("asdf");
tr.addView(tv);
table.addView(tr);
table.postInvalidate();
Содержимое (и ширина) столбцов таблицы рассчитывается динамически.
Теперь я хочу также перерисовать TableLayout, когда в пределах имеются обновленияАдаптер ListView.Для этого я создаю адаптер со ссылкой на действие.
Из адаптера я могу успешно изменить, например, текст столбца.
Что я пытаюсь сделать (без успеха):
TableLayout tableLayout = (TableLayout)activity.findViewById(android.app.R.id.columnheadings);
tableLayout.removeAllViews();
TableRow row=new TableRow(activity);
TextView tv = new TextView(activity);
tv.setText("test");
row.addView(tv);
tableLayout.addView(row);
tableLayout.postInvalidate();
К сожалению, единственное, что происходит, - это удаление текущей строки таблицы.Новая строка не добавляется в tableLayout из адаптера.
Есть предложения?