2010-12-20 40 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

相关问题