在Android视图中动态加载级联问题



我们目前正在研究网络用户的调查,该调查有级联问题(级联是指几乎没有答案的问题,并且依赖于这些答案的其余问题更改),然后移动移动用户应在其Android应用程序中获得此调查。示例JSON结构我们认为如下:

{
  "status": "1",
  "tabs": [
    "Farmer Information",
    "Signature",
    "Crop Details",
    "Land Parcel"
  ],
  "survey":[
    {
      "type": "TextView",
      "cascade": "0",
      "value": "What is your name?",
      "survey": ""
    },
    {
      "type": "TextView",
      "cascade": "0",
      "value": "What is your age?",
      "survey" : ""
    },
    {
      "type": "RadioButtonGroup",
      "cascade": "1",
      "value": "Do you have kids?",
      "survey" : [
        {
          "type": "TextView",
          "cascade": "1",
          "value": "YES",
          "survey": [
            {
              "type": "TextView",
              "cascade": "1",
              "value": "How many of them below 18?",
              "survey": ""
            },
            {
              "type": "TextView",
              "cascade": "0",
              "value": "How many of them are girls?",
              "survey" : ""
            },
            {
              "type": "TextView",
              "cascade": "1",
              "value": "Where do you live in?",
              "survey": ""
            },
            {
              "type": "TextView",
              "cascade": "0",
              "value": "How long you were there?",
              "survey" : ""
            }
          ]
        },
        {
          "type": "TextView",
          "cascade": "0",
          "value": "NO",
          "survey" : [
            {
              "type": "TextView",
              "cascade": "1",
              "value": "Where do you live in?",
              "survey": ""
            },
            {
              "type": "TextView",
              "cascade": "0",
              "value": "How long you were there?",
              "survey" : ""
            }
          ]
        }
      ]
    }
  ]
}

无论如何是否可以实现这样的事情?哪些最合适的库可以用于这种情况?我们尝试了json2view,proteus。从所有这些中,我们可以通过JSON并加载视图,但是如果存在级联问题,则可以使用。

此外,通过一个示例在问题中详细说明:假设给用户提供Do you have any have kids?的问题。这个问题可能有两个答案。Yes&No取决于用户给其他问题的答案,必须动态加载。

这可能为时已晚,但是到了。这可以在proteus中完成。

哲学:您将如何在本地Android中进行?

通过创建自定义视图,让它称为SurveyView,它具有3个自定义属性

  1. status:初始条件
  2. cascade:检查条件
  3. survey:儿童阵列SurveyView

因此,在本机Android中,将有一种方法setStatus(),当选择答案时将被调用。这将设置儿童调查视图的status。孩子将根据设置的条件检查新的status。如果匹配,则为visible否则gone

之后,只需将其注册为Proteus的自定义视图即可。没有自定义视图的情况下,有一种更复杂的方法(通过在类似的情况下使用函数绑定。

{
  "visibility: "@{fn:eq(@{data.status}, 0)}"
}

其中 data.status是从父母传播的状态,而 0是级联条件。你得到漂移。

fn:eq是一个内置功能。在此处查看所有可用功能

您也可以创建并注册自己的自定义功能。

P.S。为什么不反应本机?

p.p.s使用 proteus与proteus有关的问题中的标签,这就是为什么我错过了。

最新更新