使用JSON模式生成动态表单

时间:2013-10-05 20:07:24

标签: php android json dynamic input

我目前正在开发一个Android应用程序,它根据php服务器以json格式提供的模式动态生成输入字段。我知道如何在android中动态创建字段。

我想得到一些关于json架构格式的建议,因为有许多输入类型说EditText,Spinner,RadioGroup,RadioButton,CheckBox,DatePicker,TimePicker,Camera Image,User Signature等。它们可能有默认值, Spinners有多个值,DatePicker和TimePicker有max和min限制,EditText输入类型可能有所不同,比如数字,小数,文本,多行等等,

关于json架构的一些建议会更有帮助,因为json并不多,而且在android中也应该很容易解析。

1 个答案:

答案 0 :(得分:1)

这是一个有趣的项目。我建议你在模型类中遵循与Android完全相同的层次结构。每个模型类都将特定于其制作的视图。因此,例如,EditTextModel将包含inputType等字段,而TextViewModel可能只包含text等。现在您只需要google gson library和一些自定义适配器代码GSON。

<强>详情: json可能是这样的。

{
"views": [
    {
        "class": "com.vj.TextViewModel",
        "properties": {
            "text": "hello world",
            "textColor": "#000000"
        }
    },
    {
        "class": "com.vj.EditTextModel",
        "properties": {
            "inputType": "number",
            "textSize": 20
        }
    }
]
}

使用TextViewModel类:

public class TextViewModel implements Viewable{
    String text;
    String textColor;

    @Override
    public View getView(Context context){
        // generate and return view
        return view;
    }
}

和EditTextModel类:

public class EditTextModel implements Viewable{
    String inputType;
    int textSize;

    @Override
    public View getView(Context context){
        // generate and return view
        return view;
    }
}

其中

public interface Viewable{
    public View getView(Context context);
}

就通用json序列化/反序列化和适配器代码而言,请非常仔细地观察和检查此代码,因为它完全符合您在上面生成的类似模型所要求的内容。 https://stackoverflow.com/a/8683689/1112882

解析完json并准备好ArrayList或Collection of Viewable后,只需迭代并调用getView(context)。干杯...... :)。