2010-12-20 42 views
1

對於我的Android應用程序,我想要一個允許用戶單擊加號按鈕來添加EditText字段的視圖,並且在EditText字段旁邊,我想要減號按鈕將它們從視圖中刪除。本質上,這與在Android上編輯聯繫人界面中添加多個電話號碼/電子郵件地址非常相似。Android - 如何用多個EditText字段填充視圖並讀取它們的值?

我想我需要通過使用包含我想每次添加的EditText和按鈕的單獨的主視圖來擴展主視圖。但是,我不知道如何管理識別每個EditText和具有唯一ID的按鈕,因此,我不知道如何設法獲取每個EditText的值以保存到我的數據庫。有人能告訴我我需要做什麼嗎?謝謝。

回答

2

如果你膨脹了一個子佈局,那麼你現在應該有一個View對象。

假設您在子佈局XML中提供了ID,則可以在View —上調用findViewById(R.id.edit_text_1)

只要你跟蹤每個家長View s,你總是可以在他們上使用findViewById()。或者在通貨膨脹之後,如果您真的想要使用setId(),您可以在每個EditText上設置新的全球唯一ID。

+0

如果我在我的子佈局中有多個EditTexts緊挨着,包裹在RelativeLayout中,並且我有佈局屬性,比如「layout_below」,「layout_toRightOf」?當我更改所有EditText的ID時,是否需要修改這些屬性? – Keeb13r 2010-12-24 23:12:29

+0

是否有沒有辦法,我可以設置一個字符串是元素的ID?這似乎完全違反直覺,「setId()」將只接受一個int作爲參數。 – Keeb13r 2010-12-24 23:20:54

+0

您可以將一個*引用*設置爲一個字符串作爲ID,但不是在運行時定義的任意字符串。但是,我不認爲有必要改變ID。只要你跟蹤父視圖,大概你需要做任何事情,你不需要重新設置它的任何孩子的ID。 – 2010-12-26 16:01:39

0

您可以動態分配視圖窗口小部件,並在分配時生成您自己的ID。

Button b = new Button(this); 
b.setId(myId); 

然後,您可以返回到該小部件。

findViewById(myId); 
+0

假設我想跟隨[這個例子](http://stackoverflow.com/questions/4299924/inflating-a-view-multiple-times-in-the-same-parent-when-a-button -is點擊)。當我點擊添加按鈕時,包裝視圖已經被子視圖誇大了。現在,我應該如何設置這些新元素的ID,因爲它們可能已經由inflater創建(因此「Button b = new Button(this)」是不必要的)?或者我怎樣才能將它們用於數據存儲目的? – Keeb13r 2010-12-20 23:40:06

相關問題