OO设计用于显示不同对象的自定义列表

时间:2013-01-11 02:30:31

标签: java android oop

应该相当简单,但我想在开始编码之前把它弄好。假设我编写了一个CustomLayoutCustomListView类,它对其包含的元素有特殊行为(例如,当悬停在触摸屏上的元素上方时突出显示)。

然后,我希望此CustomListView能够显示不同类型的元素,例如PlaceBookmarkSearchResult。当显示Place时,它应该只显示名称,当显示Bookmark时,它应该显示名称加上时间戳。

我知道这样做的方法是错误的,即在CustomListView做类似的事情

  

如果(anInstance instanceof 书签)

设计课程的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

只需让CustomLayoutPlaceBookmark等包含一个方法render(),它可以呈现它包含的元素,或者让它返回某种句柄(像一个观点或类似的东西),以便任何正在呼叫render()的人都可以确定它应该放在哪里。

关于如何渲染的所有逻辑都将包含在此函数中,并且会根据您所描述的情况而有所不同。

有关详细信息,请参阅Composite pattern

答案 1 :(得分:0)

或者你可以通过继承一个通用的CustomListItem来实现每种类型的类,然后实现一个Factory,它将实例化并返回你想要的项目类型。