php - 使用 JSON 模式生成动态表单

标签 php android json dynamic input

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

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

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

最佳答案

这是一个有趣的项目。我建议您在模型类中遵循与 Android 完全相同的层次结构。每个模型类都将特定于其所针对的 View 。因此,例如 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)。干杯...:)

关于php - 使用 JSON 模式生成动态表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19202181/

相关文章:

java - 比较具有相同 .toString 内容的 JSONObject 和 Object

json - XSS 安全的 JsonResult 作为字符串

javascript - 在数据表中删除没有数据的子行

php - mysql_query 在使用特殊字符调用时不返回任何内容(丹麦字符 : æøå)

android - 无法在我的设备上升级 apk

android - 从 RAW 资源在 TextView 中加载文本

android - 如何在android中绘制曲线?

javascript - 从 javascript 更改为 php/laravel 时,数组在后面加上 1

php - 在android中将数据从文本文件加载到mysql服务器

asp.net - asmx Web 服务、json、javascript/jquery?