我有一个多态实体列表,例如List<Person>
一个人可以是员工、经理、士兵、皇室成员等......我想在一个 android 列表视图中显示人员列表,其中每种类型的人都有不同的行模板和有些不同的数据。
显示不同类型的不同行的正确方法是什么?
两个不好的(?)解决方案:
在类中放置一个抽象
getView
方法Person
,以便每个不同的人通过多态创建正确的视图。--> 这将混合模型和 MVC 的视图 - 即。如果我想在不同的屏幕(例如表格视图)中显示列表,那么它将中断。将模型到视图的逻辑放在适配器中(继承自
ArrayAdapter<Person>
)。例如在里面getView
我可以检查这个getClass()
人并相应地填充正确的视图。--> 这个方法最终会得到一长串 if-else 语句,每个人类型一个,并且在添加新类型的人时需要扩展——从面向对象的角度来看,这通常是一种糟糕的代码气味。这是“如何创建具有不同元素和动作的列表? ”中建议的解决方案。
有比上述(2)更好的解决方案吗?