2010-06-17 54 views
1

我想動態所以我要綁定文本視圖的工作動態,我認爲一個例子可以解釋我最好的機器人動力學結合

假設我要綁定7點形象的看法,我可以做這樣的:

Country = (EditText)findViewById(R.id.CountryEditText); 
City = (EditText)findViewById(R.id.CityEditText); 
LivinigCreture = (EditText)findViewById(R.id.LivingCretureE); 
Nature =(EditText)findViewById(R.id.NatureEditText); 
Inanimate = (EditText)findViewById(R.id.InanimateEditText); 
KnowenPersonality = (EditText)findViewById(R.id.KnowenPersonalityEditText); 
Occupation = (EditText)findViewById(R.id.OccupationEditText); 

但讓我們將NUMOFFILEDS改爲7作爲最後一個我想要做的事情?

myImages = new ImageView [7]; 
    for (int i = 0; i<7;i++,????) 
    myImages[i] = (ImageView)findViewById(R.id.initialImageView01); 

通知:在我的R檔的R.id.initialImageView01 - R.id.initialImageView07不是在它們之間的差距續生成所以我不知道如何使這個架構可能。 如果有人可以告訴我一個例子如何工作dynmiclly(就像使用Android的組合方式或jsp的東西?)

ID它的possiable這樣做常量時間是可以建立一個相同的XML常量像jsp那樣的次數
謝謝你pep :)

回答

0

你可以將ID本身存儲在活動開始的數組中;這樣你只需要寫一次,然後你就可以索引它們。

喜歡的東西:

int[] initialImageViewIds = { 
    R.id.CountryEditText, 
    R.id.CityEditText, 
    R.id.LivingCretureE, 
    R.id.NatureEditText, 
    R.id.InanimateEditText, 
    R.id.KnowenPersonalityEditText, 
    R.id.OccupationEditText 
}; 

然後,您可以通過訪問他們:

myImages = new ImageView [7]; 
for (int i = 0; i<7;i++) { 
    myImages[i] = (ImageView)findViewById(initialImageViewIds[i]); 
} 

如果這還不夠,你真的要動態獲取的ID,我想你可以在使用反射R.id類,可能帶有類似R.id.getClass().getFields()的東西,並在字段上迭代以檢查他們的名字是否感興趣。請檢查reference for the Class class

+0

是的,但你知道這感覺就像它不是真正的東西,沒有真正的上下文驅動綁定。 – 2010-06-18 14:23:51

+0

對不起,也許我沒有完全理解上下文驅動綁定的含義。 有一件事,我不認爲你絕對需要讓系統爲你生成ID--我不知道這是否是一個好主意,但我沒有看到任何問題,你在你的XML中手動歸屬ID佈局與'android:id =「12345」'或什麼的。 我看到的另一個選擇是,您可能希望在運行時創建視圖並以編程方式將它們添加到父視圖中,例如,如果您事先不知道要添加多少個視圖(例如TableLayout中的TableRows) - 那是你要的嗎? – Joubarc 2010-06-18 17:32:26