2011-04-05 59 views
9
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的解决方案...如何删除表格布局在Android中的表格行

thanx ..

回答

13

尝试removeView

row = (TableRow)findViewById(R.id.row); 
table.removeView(row); 
+8

我认为这是极不可能的行将具有静态ID如果他们动态添加。 – 2011-04-05 14:49:49

2

您需要知道要删除的文本视图。 TextView可以通过使用setId()设置唯一标识符或使用setTag()使用唯一标签来标识。它可以通过TextView tv =(TextView)tr1.findViewByTag(唯一标签)来识别;

使用removeView删除视图。

6

其他解决方案需要您的行具有唯一的ID。

如果他们不具有唯一的ID,然后怎么样使用:

tl.removeView(rowIndex); 

在任何情况下,你应该尝试学习如何使用SimpleCursorAdapterCursorAdapter因为它们是专门用于显示数据库的内容设计在列表中查询。请参阅Binding to Data with AdapterView

9

我意识到这是一条古老的线索,但我感到震惊,当我遇到这个没有一个体面的答案。

我不喜欢这样写道:

TableLayout table = (TableLayout) findViewById(R.id.myTable);  
table.removeAllViews(); 

,将删除所有的子视图,在这种情况下,行一切。根据您的描述,您并不希望仅删除一行,而是希望删除它们,然后重新加载行。上面的代码将执行删除部分。

+0

谢谢我想要这个.. – 2018-01-01 05:21:11

1

看看这段代码以除去表

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); 
} 
0

使用该行:

new Handler().postDelayed(new Runnable() { 
     public void run() { 
     TableRow row = (TableRow)table.getChildAt(i); 
     table.removeView(row); 
     } 
}, 100); 

我在哪里 - 是排的位置,至极要删除。

13

我写的这个方法删除除第一个以外的所有行。如果你不想删除标题行,例如它是有用的:

private void cleanTable(TableLayout table) { 

    int childCount = table.getChildCount(); 

    // Remove all rows except the first one 
    if (childCount > 1) { 
     table.removeViews(1, childCount - 1); 
    } 
} 
2

我用这个:

tl.removeView(tl.getChildAt(index)); 
+0

添加一些解释和回答这个答案如何帮助OP在解决当前问题 – 2016-05-13 14:51:59