我正在以编程方式创建视图(微调器、编辑框和日期选择器)(不知道之前的确切数字和类型)。单击提交按钮时,我需要从视图中检索所有值。并且还知道哪个值适用于哪个视图。
我最终需要将所有这些值传递给另一个活动。
我怎样才能实现这个功能。
我正在以编程方式创建视图(微调器、编辑框和日期选择器)(不知道之前的确切数字和类型)。单击提交按钮时,我需要从视图中检索所有值。并且还知道哪个值适用于哪个视图。
我最终需要将所有这些值传递给另一个活动。
我怎样才能实现这个功能。
点击处理程序传入对被点击视图的引用。只需调用以获取其值。
如果您真的需要遍历您所做的所有事情并检查所有值,请将它们全部存储在某种数据结构(散列、列表等)中。跟踪哪个应该是该数据结构的一部分。但是,如果不知道您何时以及为什么需要访问它们以及它们的用途,我们就无法真正提出更详细的解决方案。
为此,您可能有一个List
of View
s 作为这样的类成员。
private List<View> viewList;
在创建每个视图时,将每个视图添加到此列表View
中。然后您可以轻松地循环它以获取值。
如果您不想要包含您的视图的列表(如 R9j 所建议的,这是一种非常好的方法),也可以使用获取活动的根视图
View rootLayout= ((ViewGroup)findViewById(android.R.id.content)).getChildAt(0)
在此视图中,您添加的所有视图都将是,因此您可以浏览子视图列表
for(int i=0; i<rootLayout.getChildCount(); i++)
{
View child = rootLayout.getChildAt(i);
if(child instanceof TextView)
{
int id= child.getId();
if(id>500) //whatever check makes sense to you given the way you use ids
{
String content = ((TextView) child).getEditableText().toString();
}
}
}
在这种情况下,我检查了 TextView,但也可以使用任何其他类型,通过在创建视图时为视图提供 ID,您可以识别哪个视图应该具有哪些信息。您也可以为此使用标签。
请注意,除了名称之外,视图的 ID 不必是唯一的。