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

我想对json模式格式提出一些建议,因为输入类型很多,例如EditText,Spinner,RadioGroup,RadioButton,CheckBox,DatePicker,TimePicker,Camera Image,User Signature等。它们可能具有默认值,Spinners具有多个值,DatePicker和TimePicker具有最大和最小限制,EditText输入类型可能会有所不同,例如数字,小数,文本,多行等,

有关json模式的一些建议会更有帮助,因为对json的使用不多,并且在android中也应易于解析。

最佳答案

这是一个有趣的项目。我建议您在模型类中遵循与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或Viewable集合准备就绪后,只需遍历并调用getView(context)。干杯... :)

10-06 05:01
查看更多