Как реализовать каскадные активы с Proteus Android Layout Engine
Я хочу создать каскадные активы из библиотеки Proteus. Я новичок в разработке под Android, и мне удалось создать динамическое представление с помощью библиотеки с помощью @adithya (разработчика Proteus).
то, что я хочу, это просто предположить, что есть переключатель со значением переключателя, мне нужно добавить дополнительные активы в нижнюю часть переключателя
это как у тебя есть дети? если да, то сколько текстовых полей должно загружаться ниже
как это
{
"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" : ""
}
]
}
]
}
1 ответ
Если вы ищете представления, основанные на данных, то children
атрибут может быть связанным объектом, как в следующем примере
{
"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
должен быть массив JSON.
Вот collection
это набор данных, т.е. сколько раз элементов в массиве данных.
layout
должно быть определением макета или ссылкой
Какой макет раздувать для каждого элемента коллекции. Обратите внимание data
атрибут и использование $index
в макете.
Это будет работать с набором данных, подобным следующему:
{
"tags": [
{
"title": "alpha"
},
{
"title": "beta"
},
{
"title": "gamma"
},
{
"title": "delta"
},
{
"title": "niner"
}
]
}