Android开发之自建通用Adapter-彻底实现视图和数
在安卓开发里Adapter(适配器)的分量不小,从图中就能看到他是listview和数据集的分离,能把获取数据和显示数据分离开,实现解耦。前面的文章有讲Adapter,但是是侧重AndroidAnnotations的框架的简单demo,在这篇里要把之前的Adapter进行优化,减少重复代码,简洁程序,提高健壮性和可维护性。
做法主要是提取2个基类,把共通的工作放到基类里做,数据类型用泛型规范。
1、MyBaseAdapter.java
Adapter的基类,继承BaseAdapter,在实际开发中,由于界面要求很多样化所以一般都用最基础的BaseAdapter,它的自定义性更高。数据集在Adapter基类里定义好,类型是泛型的集合。拥有get和set方法,set方法里重新加数据后要做notifyDataSetChanged通知。getView方法里做了优化,convertView实例为空时才去实例化,当然实例化要通过抽象方法交给子类去实现。这就是最基本的框架,比较通用。
2、ItemView.java
BookItemView的基类,继承自LinearLayout,主要作用就是留出init方法供Adapter的getView里用,写个框子,具体实现交给子类,还有把数据Data的实例放到里基类里,不用每个子类里都再取赋值给全局Data。
3、BookItemView.java
ItemView的子类,泛型是BookInfo类型,那么_data变量也是BookInfo类型,就可以在init里用_data取值,显示了。
4、BooksAdapter.java
MyBaseAdapter的子类,泛型是BookInfo类型,需要实现里面的getItemView方法,返回ItemView。实现当时是根据子ItemView去build了。
以上四步便完成了共通的提取,以后再有Adapter只需写2个简单的子类就可以了。示例中本身很小,看不出优点,但是随着功能的扩大,界面的增多,好处就立马体现出来了,不论在前期的写代码开发,还是后期的维护升级,都是很好的。
目前本码农是这么做得,这是我一点点实践出来的,在此分享给大家。如果您有更好的办法,可以关注本公号(码农随笔),和我交流。
如果觉得这篇文章帮助到了你请赞一下或者分享给有需要的人,您的评价是我前进的方向。欢迎加关注,内容的话,可能是技术,可能是思想,可能是工作感悟,只是希望把自己的认识传播出去,从而寻找些同频的人,共同学习交流,做码农一个人太孤单。。。