在Android中为ListView实现通用适配器的最佳方法

时间:2014-10-03 19:47:16

标签: android generics android-listview android-adapter baseadapter

我发现在编码时我使用了大量的ListVIews,并且我的大部分时间花在复制粘贴和修改以前的活动上,以适应新的活动数据。 我想实现一个通用的列表适配器类,我可以将它用于我的所有ListView,无论它们的视图如何。

我已经做了一些搜索方法,我遇到了这个教程:Tutorial

他自己实施了一个Genrick Adapter。我试图实现他的方法,但我在eclipse中遇到了编译器问题。关于通用类型*但这不是手头的问题。)

我也遇到过这个图书馆:android-collections-list-and-spinner-adapter 它声称也做我想要的。 关于它的另一个链接:Article on the lib

所以我的问题更多的是其他人为了实现ListViews的代码重用性而完成/使用的内容。

有没有人之前使用过android-collections-list-and-spinner-adapter库?

我希望按照以下方式做点什么:

GenerickAdapter<MyObject> adapter = new GenerickAdapter<MyObject> (list<MyObject, context);`
listView.SetAdapter(adapter);

1 个答案:

答案 0 :(得分:1)

虽然传递一个处理视图构建的ViewFactory的想法总是一个有趣的想法,但我仍然不清楚使用该库。它已经超过3年了,作者(当时)似乎不了解适配器和性能。

首先,允许任何集合类型作为适配器的支持是一个非常糟糕的主意。对于具有快速随机访问时间的东西支持适配器至关重要......就像ArrayList一样。在呈现过程中,每个位置编号可以调用适配器的getView()方法3-4次。这是在给定位置获得物品的很多要求。每次发出项目请求时,该库的作者都会遍历每个集合。那太疯狂了!这会导致性能问题。这就是为什么你没有看到任何类型的Set适配器或LinkedList适配器。

我最接近的就是在Adapter-Kit内找到的InstantAdapter。它确实有一些限制,但应该适用于简单的布局。以下是关于如何使用它的video。否则,大多数适配器库将要求您为要支持的每种类型的视图布局创建新的适配器类。因此,为什么Goran Horia Mihail建议扩展ArrayAdapter。如果您需要专门为该方法设计的适配器,可以尝试Advanced-Adapters