我目前正在使用一个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)
。干杯... :)