我目前正在开发一个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中也应该很容易解析。
答案 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)
。干杯...... :)。