gpt4 book ai didi

android - 在 Android 列表中显示不同类型的行

转载 作者:搜寻专家 更新时间:2023-11-01 08:03:48 24 4
gpt4 key购买 nike

我有一个多态实体列表,例如 List<Person>一个人可以是雇员、经理、士兵、皇室成员等...我想在 android ListView 中显示人员列表,其中每种类型的人都有不同的行模板和不同的数据。

显示不同类型的不同行的正确方法是什么?

两个不好的(?)解决方案:

  1. 写一篇摘要getView Person 中的方法类,这样每个不同的人都会通过多态性创建正确的 View 。 --> 这将混合 MVC 的模型和 View - 即。如果我想在不同的屏幕(例如表格 View )中显示列表,那么它就会中断。

  2. 将模型到 View 的逻辑放入适配器(继承自 ArrayAdapter<Person> )。例如里面 getView我可以查看 getClass()的人,并相应地填写正确的观点。 --> 这种方法将以一长串 if-else 语句结束,每个人类型一个,并且在添加新类型的人时需要扩展——从面向对象的角度来看,通常是糟糕代码的味道。这是“How to create list with different elements and actions?”中建议的解决方案

有没有比上面(2)更好的解决方案?

最佳答案

我个人会选择与您的第二个解决方案类似的东西。我可能会在 Person 类中包含一个抽象方法来识别人员的类型,因此您可以使用它而不是使用 上的 getClass() 检查getView() 调用中的 Person 对象。

在您的自定义适配器中,扩展 BaseAdapter 并确保 getViewTypeCount() 返回数据集中不同类型人员的数量,并且 getItemViewType(int position) 返回数据集中位置的正确标识符。

这个问题有很多关于这个主题的有用信息:

getViewTypeCount and getItemViewType methods of ArrayAdapter

关于android - 在 Android 列表中显示不同类型的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17152080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com