2011-11-04 42 views
2

我想動態添加行到線性佈局,其中每行將有2個按鈕和2個edittexts。我不確定組織這個最好的方法。我的想法是爲每一行創建一個類,其中包含按鈕和edittext,但FindViewByID不能這樣工作。另一個想法是爲每個對象包含一個佈局的實例,但我不確定如何在沒有創建動作偵聽器的情況下高效地訪問佈局中的按鈕的最佳方式,如果我有10個對象,20個按鈕和20個edittext。是否有可能使用包含的佈局數組並根據需要添加它們如果我這樣做?Android:動態創建一個對象列表,每個對象都有自己的按鈕和EditTexts

回答

1

我只是爲該行創建一個佈局文件,使用LayoutInflator動態創建它,併爲每個創建偵聽器。我不認爲架空會殺死你。

如果它的行數不定,您應該在列表視圖中使用自定義ArrayAdaptor執行此操作,並回收您的佈局。

LayoutInflater inflater = LayoutInflater.from(this); 
View yourRowView = inflator.inflate(R.layout.yourrowfile, null); 
yourRowView.findByViewId(R.id.firstButton). setOnClickListener(//blah blah blah 

((ViewGroup)findByViewId(R.id.yourParentContainer)).addView(yourRowView); 

LayoutInflator從xml佈局定義中膨脹佈局。通常在一個活動中,你只需將R.layout [無論]傳給setContentView,但如果你想動態地創建一個視圖並添加它,你可以使用上面的代碼(或類似的代碼)。請注意,要填充框並觸發按鈕,您需要在視圖上調用findByViewId。我經常犯這個錯誤的方法來對這個活動偶然發生(習慣的力量)。

要使用自定義用戶界面進行列表視圖,其概念上相似,但管道稍微複雜一些,但尚未廣泛描述。這裏有一個例子:

http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/

+0

呃好吧,是有辦法啞下來一點點。我剛剛開始。我應該創建按鈕和editTexts的佈局,然後使用充氣器來添加它們,對嗎?我將如何使用充氣器訪問各個佈局? – ProdigousRanger

+0

我試過你的代碼,而.from語法不正確。我正在運行2.3.3,並且從我在互聯網上發現的版本與之前的版本不同。你知道如何在新平臺上做到這一點嗎? – ProdigousRanger

+0

如果這不起作用,我會感到震驚。取決於你從哪裏調用它。郵政編碼?如果你在一個匿名函數中,你需要在MyActivity.this這個Activity類的名字前加上'this'。 這種形式仍然可以在這裏:http://developer.android.com/reference/android/view/LayoutInflater.html#from(android.content.Context) 但是,你可以做到這一點很難,並使用它: LayoutInflater inflater =(LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE); 您將需要對「上下文」的引用,但是因爲這就是'this'指向的問題。 –

相關問題