在之前写过一篇多 Type 的错误使用使用ListView多Type的错误姿势,下面写一下针对这种使用场景的优化。
可以看到之前的代码很繁杂,根据各种 Type 有各种 position 的判断,在 getView 的时候代码一坨一坨的看着很不舒服,那么有没有什么优化策略呢?
可以知道多 Type 的使用原因是界面多种展示风格,本质的原因则是数据类型的不一致,即数据源中有多种数据类型,那么就可以直接 利用泛型来实现数据的区分,整合一个 List
根据策略,将头部的布局抽成String
类型,将打印机的布局抽成PrinterInfo
类型,后面获取item
后根据类型来判断是头布局,还是打印机布局。
优化后的代码如下:
1 | public class PrinterManagerAdapter extends BaseAdapter { |
核心代码便在initDataList
中,所有的对象都是继承自 Object 的,利用instanceof
可以判断放入的是哪种数据类型,一种数据类型对应一种 Type。对比之前的代码,可以看到调整后的代码可读性更高,也更简洁了。