3

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

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

关于 json 模式的一些建议会更有帮助,因为我对 json 的了解不多,而且它也应该很容易在 android 中解析。

4

1 回答 1

2

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

细节: 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). 干杯... :)

于 2013-10-05T22:23:21.863 回答