0

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

然后我希望它CustomListView能够显示不同类型的元素,例如 a Place、 aBookmark或 a SearchResult。例如,当显示 a时,Place它应该只显示名称,当显示 a 时Bookmark,它应该显示名称和时间戳。

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

if (anInstance instanceof Bookmark)

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

4

2 回答 2

0

或者,您可以通过继承一个通用的 CustomListItem 来实现这些类型中的每一个的类,然后实现一个工厂,它将实例化并返回您想要的项目类型。

于 2013-01-11T04:49:05.673 回答
0

只需让CustomLayout, Place,Bookmark等包含一个render()渲染它包含的元素的方法,或者让它返回某种句柄(如视图或类似的),以便调用的人render()可以确定应该放置它的位置。

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

有关详细信息,请参阅复合模式

于 2013-01-11T02:39:21.683 回答