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