Sel*_*ara 9 android json cascade proteus
我们目前正在开展一个项目,在这个项目中,网络用户创建一个具有级联问题的调查(级联意味着问题几乎没有答案,并且依赖于这些答案,其余问题会发生变化),然后移动用户应该在他们的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" : ""
}
]
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
反正有没有实现这样的事情?什么是最适合这种情况的库?我们尝试了json2view,proteus.从所有这些我们可以传递一个json并加载视图,但如果有级联问题,他们可以使用.
此外,通过一个例子详细阐述了问题:假设用户有问题Do you have any have kids?
.这个问题可能有两个答案.Yes
并且No
取决于用户给出其他人的答案,必须动态加载问题.
小智 2
这可能为时已晚,但还是这样。这可以在 中完成proteus
。
哲学:你会如何在原生 Android 中做到这一点?
通过创建一个自定义视图,让我们调用它,SurveyView
它有 3 个自定义属性
status
: 初始条件cascade
:检查条件survey
:子数组SurveyView
因此,在 Native Android 中,会有一个方法setStatus()
在选择答案时被调用。这将设置status
儿童调查的观点。孩子会status
根据设置的条件检查新的东西。如果匹配,则为visible
其他gone
。
之后只需将其注册为 proteus 的自定义视图即可。有一种稍微复杂的方法可以在没有自定义视图的情况下执行此操作(通过使用像这样的函数绑定)。
{
"visibility: "@{fn:eq(@{data.status}, 0)}"
}
Run Code Online (Sandbox Code Playgroud)
其中data.status
是从父级向下传播的状态,0
是级联条件。你明白了。
fn:eq
是一个内置函数。在此处查看所有可用功能
您也可以创建和注册自己的自定义函数。
PS 为什么不原生反应?
PPSproteus
在与 proteus 相关的问题中使用标签,这就是我错过这个的原因。
归档时间: |
|
查看次数: |
213 次 |
最近记录: |