2011-04-05 89 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