android - android 中的类型化 UI 和监听器

标签 android user-interface design-patterns

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

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

我正在尝试找到一个更动态的解决方案,例如为每种类型创建一个类,它可能不需要像在 fragment 类中那样以编程方式添加布局和组件,

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

拥有一个列表适配器并在那里应用不同的用户界面只会将设计问题转移到其他类。

早日感谢您的贡献

最佳答案

嗯,对您来说,简单的解决方案是拥有一个类层次结构——一个基本的 objectDTO 类和每个类型的一个子类。加载对象列表时,使用工厂方法创建正确类型的对象。每种类型都会覆盖一个 createView 方法,该方法将为该类型创建 View 。那么你的建表函数就变成了:

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

但是如果你正在为一个对象类型创建一个 View ,那么总是需要有人动态地创建 View 对象(在这种情况下是 createView),并且总是需要一些知道什么类的函数制作一个对象(在本例中为工厂)。这只是您希望这种复杂性出现在哪里的问题。

关于android - android 中的类型化 UI 和监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24220673/

相关文章:

java - JTextField 中的异常处理

具有多个状态机的 C++ 状态设计模式

c++ - 为什么 'visitor pattern'要求每个类都继承VisitorHost接口(interface)类并具有accept()函数?

java - 根据Java中对象的类型选择实现

android - android中的元数据是什么意思?

Android studio 无法识别 UTF-8 编码

java - Android 设备选择器中的序列号/名称

javascript - 通过脚本弹出widget

Android 的 Java 7 语言特性

java - 是否有可能在 Web 前端显示 IMS 屏幕?