我想改善我创建以下UI的方式。目前,我正在根据每个对象的type属性以编程方式创建每个表格行。

class objectDTO {
    private type; //enum
    public boolean isMultiple(){...}
    public boolean isSingle(){...}
}


我试图找到一种更动态的解决方案,例如为每种类型都提供一个类,而该类可能不需要像我在片段类中那样以编程方式添加布局和组件,

if(objectDTO.isMultiple()) {
    //Create TableRow + Multiple radiobuttons
}
else if(objectDTO.isSingle() {
    //Create TableRow + Add One Checkbox
{
else {
    //Create default invalid object Interface or skip
}


如果有一个listadapter并在其中应用不同的ui,则会将设计问题移至其他类。

尽早感谢您的贡献

最佳答案

好了,为您提供的简单解决方案是拥有一个类层次结构-一个基本的objectDTO类和每个类型的子级。加载对象列表时,请使用工厂方法创建适当类型的对象。每种类型都将覆盖createView方法,该方法将为该类型创建视图。然后,您的表创建功能变为:

for(objectDTO object : allObjects){
    View view = object.createView();
    tableView.addView(view, lp);
}


但是,如果要为对象类型创建视图,则总是需要有人动态地创建视图对象(在本例中为createView),并且始终需要有一些函数知道创建哪个类的功能。对象(在这种情况下为工厂)。这只是您希望这种复杂性在哪里的问题。

09-09 22:41