2011-08-25 41 views
1

我在循環5 TextViews上創建了一些文本並將它們添加到LinearLayout中。 之後,我需要改變它們中的文字。我想刪除所有這些,並在循環中再次創建新的。但在TextView刪除之前,我必須確保它存在。怎麼做?如何檢查TextView是否存在

for(int i=0; i<5; i++){ 
    TextView tv = new TextView(context); 
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
    tv.setLayoutParams(params); 
    tv.setId(i); 
    tv.setText("some data"); 
    ll.addView(tv); 
} 

謝謝你的幫助和你的時間!

回答

4

tv[i].setVisibility(View.GONE); 

要更改文本,並重新添加。

+0

謝謝!好主意,但在這個LinearLayout中呈現另一個視圖:)我需要他們:) – lubart

+0

然後添加一個額外的'LinearLayout'到這個佈局,並將所有'TextView'添加到這個內部佈局。 – Michael

+0

不客氣=) – Michael

1

如果你想刪除它們,你應該保留對你創建的每個文本視圖的引用。 如果我正確理解你的問題,只需創建一個包含5個元素的TextViews數組,然後運行循環來完成你想要的任務。 要「刪除」他們,你可以打電話:如果你想刪除所有的人都那麼就執行ll.removeAllViews()

tv[i].setText("New Text"); 
tv[i].setVisibility(View.VISIBLE); 
+0

謝謝!我考慮過它,它的工作原理。但有趣的是,我可以通過這種方式刪除從代碼創建的視圖。 – lubart

+0

它是否在代碼中創建並不重要。 – IncrediApp

1

更好的解決方案是在列表中保存對您的TextViews的引用,以便您可以在創建它們之後與它們進行交互。否則,你將無法看到對象。