java - 如何使用Proteus Android Layout Engine实现级联资源

标签 java android proteus

我想从 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/

相关文章:

java - Android 中的 JXL 库

java - 使用 Reactor WebClient 发出非阻塞 HTTP 请求并将响应反序列化到对象的最佳方法是什么?

android - 如何使用 New Folder Picker API 将 SD 卡中的图像显示到 ListView?

android - 在 Android View 中动态加载级联问题

java - 方法中的两个通用列表参数之一

java - 包装默认的 servlet 但覆盖默认的 webapp 路径

Android TV 自定义演示器错误 : Do not setLayoutFrozen in layout or scroll

java - 使用带有java的openCV从图像中提取Android圆形区域

android - 有没有办法禁用通过 proteus 膨胀的 webview 中的缓存