我想从 Proteus 库生成级联资源。 我是android开发的新手,在@adithya(Proteus的开发者)的帮助下,我成功地使用该库构建了一个动态 View 。
我想要的简单是假设有一个单选按钮,其值为单选按钮,我需要向单选按钮的下方添加更多资源
就像 你有 child 吗 ? 如果是 下面应加载多少个子文本框
像这样
{
"survey":[
{
"value" : "What's your name?",
"type" : "TextView",
"cascade" : "0",
"show" :"true",
"survey" : "",
"id" : "1"
},
{
"value" : "What's your age?",
"type" : "TextView",
"cascade" : "0",
"show" :"true",
"survey" : "",
"id" : "2"
},
{
"value" : "Do you have any children?",
"type" : "SelectionController",
"cascade" : "1",
"show" :"true",
"id" : "3",
"option" : [
{
"value": "YES",
"cascade": "1",
"type": "option",
"show": "false",
"id" : "3.1",
"survey": [
{
"value" : "How many children?",
"type" : "TextView",
"cascade" : "0",
"show" :"false",
"id" : "3.1.1",
"survey" : ""
},
{
"value" : "How many are married",
"type" : "TextView",
"cascade" : "0",
"show" :"false",
"id" : "3.1.2",
"survey" : ""
}
]
},
{ "value": "No",
"cascade": "0",
"type": "option",
"show": "false",
"id" : "3.2",
"survey": ""
}
]
},
{
"value" : "What's your address?",
"type" : "TextView",
"cascade" : "0",
"show" :"true",
"id" : "4",
"survey" : ""
},
{
"value" : "What is your status?",
"type" : "SelectionController",
"cascade" : "1",
"id" : "5",
"show" :"true",
"option" : [
{
"value" : "Graduate",
"type" : "option",
"cascade" : "1",
"id" : "5.1",
"show" :"false",
"survey" : [
{
"value" : "Which year?",
"type" : "TextView",
"cascade" : "0",
"show" :"false",
"id" : "5.1.1",
"survey" : ""
},
{
"value" : "Which faculty?",
"type" : "TextView",
"cascade" : "0",
"show" :"false",
"id" : "5.1.2",
"survey" : ""
}
]
},
{
"value" : "Undergraduate",
"type" : "option",
"cascade" : "1",
"show" :"false",
"id" : "5.2",
"survey" : [
{
"value" : "where are you studying?",
"type" : "SelectionController",
"cascade" : "1",
"show" :"false",
"id" : "5.2.1",
"option" : [
{
"value" : "APIIT",
"type" : "option",
"cascade" : "1",
"show" :"false",
"id" : "5.2.1.1",
"survey": [
{
"value" : "What is your GPA?",
"type" : "TextView",
"cascade" : "0",
"show" :"false",
"id" : "5.2.1.1.1",
"survey" : ""
},
{
"value" : "How was APIIT?",
"type" : "TextView",
"cascade" : "0",
"show" :"false",
"id" : "5.2.1.1.2",
"survey" : ""
}
]
},
{
"value" : "SLIIT",
"type" : "option",
"cascade" : "0",
"show" :"false",
"id" : "5.2.1.2",
"survey" : ""
},
{
"value" : "UCSC",
"type" : "option",
"cascade" : "1",
"show" :"false",
"id" : "5.2.1.3",
"survey": [
{
"value" : "How long being in UCSC?",
"type" : "TextView",
"cascade" : "0",
"show" :"false",
"id" : "5.2.1.3.1",
"survey" : ""
},
{
"value" : "How is UCSC?",
"type" : "TextView",
"cascade" : "0",
"show" :"false",
"id" : "5.2.1.3.2",
"survey" : ""
}
]
},
{
"value" : "UOM",
"type" : "option",
"cascade" : "0",
"show" :"false",
"id" : "5.2.1.4",
"survey" : ""
}
]
}
]
}
]
},
{"value" : "Are you tired of studying?",
"type" : "SelectionController",
"cascade" : "0",
"show" :"true",
"id" : "6",
"option" : [
{
"value" : "YES",
"type" : "option",
"cascade" : "1",
"show" :"false",
"id" : "6.1",
"survey": ""
},
{
"value" : "NO",
"type" : "option",
"cascade" : "0",
"show" :"false",
"id" : "6.2",
"survey" : ""
}
]
}
]
}
最佳答案
如果您正在寻找数据驱动 View ,则 children
属性可以是绑定(bind)对象,如下例所示
{
"type": "LinearLayout",
"orientation": "horizontal",
"children": {
"@": {
"collection": "@{user.tags}",
"layout": {
"type": "LinearLayout",
"orientation": "horizontal",
"data": {
"tag": "@{user.tags[$index]}"
},
"children": [
{
"type": "TextView",
"text": "@{tag.title}"
}
]
}
}
}
}
collection
must be json array.
这里collection
是数据集,即数据数组中有多少个项目。
layout
must be a layout definition or reference
为集合中的每个项目填充什么布局。请注意布局中的 data
属性和 $index
的使用。
这将适用于如下数据集:
{
"tags": [
{
"title": "alpha"
},
{
"title": "beta"
},
{
"title": "gamma"
},
{
"title": "delta"
},
{
"title": "niner"
}
]
}
关于java - 如何使用Proteus Android Layout Engine实现级联资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47880565/