我可以使用XForms要求用户创建任意长度列表,然后收集有关每个列表项的属性吗?

时间:2012-11-14 02:23:40

标签: xml xforms wxformbuilder

对于字段数据收集项目,有人可以提供指示我如何能够创建这样的表单:

  1. 首先,收集一个位置的人员列表。人数可能是变数。
  2. 列表完成后,列表中的每个人都会收集年龄和性别以及其他几个固定/已知属性。
  3. 如何创建一个循环,使表单阅读器在上面的步骤2中对第1项中收集的每个项目进行迭代。

    一个小的XML片段将不胜感激。我坚持如何为第二项创建循环。

    我打算在Open Data Kit(ODK)

    中使用它

1 个答案:

答案 0 :(得分:1)

因为列表的长度可以是任意的,所以处理这个问题的最好方法可能是有一个按钮或其他指示器,通过它你可以确定第一个循环应该终止而第二个循环应该开始。

其次,您应该小心将GUI的职责与实际程序分开。 GUI应该是非常愚蠢的,应该做的只是获取输入。

您的实际程序(可能只是调用您的GUI的另一个类)应该能够获得所需的任何内容,并从GUI向GUI发送它想要显示的内容。

如果你想使用循环,你有一个循环可以从你的GUI获得一个名称(或任何你想用来识别一个人的东西),如果有一个新的可用。然后你让GUI告诉应用程序打破那个循环(一个调用一个函数的按钮,或者设置一个值等),然后app移动到第二个循环。

但我推荐的是“保存”按钮。没有必要循环,只需设置一个事件处理程序,每次单击“保存”时调用类似“append_new_name_to_the_list(new_name)”的事件。然后有一个“保存”名称,另一个“保存”额外的数据。您必须弄清楚如何确定哪个名称与哪些额外信息相关,但这可能就像从列表的开头开始并跟踪该位置一样简单。

显然,如果你可以一次性收集所有信息,那就更容易了,但我意识到这可能并不可取。