在安卓中基于json模板创建动态用户界面

3

在应用启动时,我将从Web服务器下载数据并将其存储在共享偏好中。现在我想根据JSON模板动态创建Android UI表单/活动。有人可以建议我如何实现吗?

 {  
       "templates":[  
          {  
             "name":"Default",
             "default":true,
             "fields":[  
                {  
                   "type":"textbox",
                   "label":"Your e-mail",
                   "metadataIPTC":"234",
                   "required":true,
                   "regex":"\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b"
                }
             ]
          }
       ]
    }

由于我正在尝试创建,这是我第一次实施这个,如果你能提供任何教程/示例给我@ianhanniballake。 - undefined
请查看此链接:https://stackoverflow.com/questions/65086448/react-native-server-driven-ui/68200157#68200157 - undefined
2个回答

4
XML布局会在运行时转换为Java对象,因此您只需编写一个具有容器布局(例如线性布局)的XML,然后在运行时对其进行充气,并根据从服务器接收到的信息以编程方式添加视图。
例如: 创建布局并将其设置为Activity的内容视图。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/container"
   /> 

在代码中的某个位置:


假设在解析JSON后,您有一个List<Field> fields;

  LinearLayout linearLayout = (LinearLayout) findViewById(R.id.container);
  for (Field f: fields) {
    if (f.getType().equals("textbox")) {
        TextView txtView = new TextView(this);
        txtView.setText("Your e-mail");
        txtView.setId(1);//need for better use
        linearLayout.addView(txtView);
    } else if (f.getType().equals("button")) {
        //create a button similarly as above,and add it to the layout
    }
  }

请提供一个示例样本。 - undefined
关于解析Json的内容? - undefined
我知道如何解析JSON,但问题是如何显示用户界面。 - undefined
谢谢,我现在会尝试一下。 - undefined
我们需要为每个控件进行检查吗? - undefined
2
如何从这里提取值,请有人告诉我。 - undefined

1

你能编辑这个回答,加上关于链接内容的简介吗?我们通常不鼓励只提供链接的回答,因为不可避免的链接失效可能会使回答变得无用,如果没有其他信息的话。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接