как удалить строку таблицы в макете таблицы в android
void init()
{
intcolumnwidth1 = int_scr_wd*55;
intcolumnwidth1 = intcolumnwidth1/100;
for (int i = 0; i < strarr.length-1; i++)
{
strinarr = fun1.split(strarr[i].trim(),"^");
tr1 = (TableRow) new TableRow(this);
txt1=new TextView(this);
txt1.setWidth(intcolumnwidth1);
txt1.setText(strinarr[0]);
tr1.addView(txt1);
tl.addView(tr1,new TableLayout.LayoutParams(layoutParams));
}
}
сценарий-это когда для первого открытия этой страницы он динамически добавляет строки в макет таблицы ... но если через некоторое время данные в базе изменятся ... когда я нажимаю на кнопку обновления, он добавляет новые данные после старых данных в макете таблицы... все, что мне нужно, это решение для обновления или удаления textview, который уже существует в макете таблицы...
thanx..
8 ответов
попробовать removeView
row = (TableRow)findViewById(R.id.row);
table.removeView(row);
этот метод, который я написал, удаляет все строки, кроме первой. Это полезно, если вы не хотите удалять строку заголовка, например:
private void cleanTable(TableLayout table) {
int childCount = table.getChildCount();
// Remove all rows except the first one
if (childCount > 1) {
table.removeViews(1, childCount - 1);
}
}
Я понимаю, что это старая нить, но я так же шокирован, когда наткнулся на это без достойного ответа.
Я делаю это так:
TableLayout table = (TableLayout) findViewById(R.id.myTable);
table.removeAllViews();
это удалит все дочерние представления, в данном случае строки и все остальное. По вашему описанию не кажется, что вы хотите удалить только одну строку, но что вы хотите удалить их, а затем загрузить строки снова. Вышеуказанный код сделает извлекая часть.
другие решения требуют, чтобы ваши строки имели уникальные идентификаторы.
Если у них нет уникальных идентификаторов, как насчет использования:
tl.removeView(rowIndex);
в любом случае, вы должны попробовать научиться использовать SimpleCursorAdapter или CursorAdapter потому что они специально разработаны для отображения содержимого запроса базы данных в списке. См.привязка к данным с помощью AdapterView.
вам нужно знать textview для удаления. TextView можно определить, установив уникальный идентификатор с помощью setId () или используя уникальный тег с помощью setTag ().
затем он может быть идентифицирован TextView tv = (TextView) tr1.findViewByTag (уникальный тег);
используйте removeView для удаления представления.
посмотреть этот код, чтобы удалить строку в таблице
private List<View> listViewRow;
if (listViewRow.size() > 0) {
for (View view : listViewRow) {
table.removeView(view);
}
}
for (int i = 0; i < myList.size(); i++) {
row.addView((new TextView(context).setText("Teste")), 0);
row.addView((new TextView(context).setText("Teste")), 1);
row.addView((new TextView(context).setText("Teste")), 2);
listViewRow.add(row);
table.addView(row, 1);
}
используйте этот:
new Handler().postDelayed(new Runnable() {
public void run() {
TableRow row = (TableRow)table.getChildAt(i);
table.removeView(row);
}
}, 100);
где i-позиция строки, которую вы хотите удалить.