2011-11-10 68 views
0

我是一個Android新手,所以原諒我,如果這個問題很簡單。Android,動態改變視圖,添加/刪除新組件

基本上我想將一個java項目移植到Android。通過視圖組件在我的Java應用程序動態更改取決於模型。即,正在顯示的模型可能需要n個複選框或n個單選框,具體取決於傳遞給視圖的枚舉類型。

在我的Java顯示這通過嵌套循環與n號碼每次加組件到屏幕實現。 e.g代碼的簡化版本:

if (type == TYPE.CHECKBOXES){ 
for (int i = 0; i < n ; i++){ 
add(new JCheckBox()); 
}} 

這是每一個下一個按鈕被按下時處理的圖(類型每次都變化)。在android中,我如何動態地添加和刪除組件,還是我需要爲每種類型設置新的視圖?

非常感謝 山姆

+1

你會做什麼在android上工作,只要記住使用正確的android組件。只需一次編輯:您當然會將您的複選框添加到您的主視圖主佈局(線性佈局等) – Warpzit

+0

同意:Android和Swing在其事件偵聽框架和佈局設置中非常相似。 Warzpit建議的最小更改只能在Android上正常工作。 – Guillaume

回答

1

在Java您在使用JPanel非常久遠的具體佈局,管理您的佈局(即BorderLayoutFlowLayout等) 您添加組件JPanel,然後添加你的JPanel父或根佈局。

一個小例子(如你貼:)

if (type == TYPE.CHECKBOXES){ 
    for (int i = 0; i < n ; i++){ 
      mayPanel.add(new JCheckBox()); 
    } 
} 

在你的Android使用管理其ViewGroup有具體的子類的佈局設計您的佈局(即LinearLayout就像下面FlowLayoutRelativeLayout可考慮BorderLayout

您可以使用這些佈局就像一個JPanel

if (type == TYPE.CHECKBOXES){ 
    LinearLayout myPanel = new LinearLayout(this); 
    for (int i = 0; i < n ; i++){ 
      CheckBox chk=new CheckBox(this); 
      chk.setText("Hello"); 
      myPanel.addView(chk); 
    } 
    myRootPanel.addView(myPanel); 
} 

只是一個補充:Java中的Component在Android中被稱爲View。大部分的控制(也稱爲widget像ButtonEditTextImageButtonImageView)購買Android是View子類。