项目结构图

主要是对baserecycleadapter和baseviewholder进行封装。
好了,开始讲课了^_^。
baserecycleadapter.class
baserecycleadapter类里面其实没什么,就和普通的adapter没什么区别,只是将数据的设置用抽象方法去表示,然后让继承类去实现结果操作。
看到上面的代码,大家应该看到了两个重点:
一、单击事件的回调:
recyclerview默认是没有像listview的onitemclick方法的,我们必须得自己去实现,我是直接给引用 的布局设置点击事件和长点击事件,这个点击事件最好是设置在oncreateviewholder方法中,因为recycleradapter初始化只调用一次,而有些人习惯设置在onbindviewholder方法中,这样每次更新view都要去设置一遍监听事件,是没有必要的操作。大家看到我在两个事件的回调里面设置了一个clickflag单击标记,大家知道是为了避免什么吗?操作实验过的同学应该就会知道了,假如不设置这些标志,在进行长点击操作松开手指会发现,他还会再触发一次短单击事件,所以为了避免长点击操作带来的两次回调效果,先设置clickflag为true,此时可以短点击,当长单击操作开始时,我们设置clickflag为false,这是长单击回调结束,进入了短单击,发现此时clickflag是为false的,所以就不回调短单击的事件,最后又重新设置回可短单击效果,这部分要是不明白的可以给我留言。
二、数据传递用泛型
①list< ? extends basebean> data
② protected abstract void convert(baseviewholder holder, t bean);
这两个部分都是泛型的巧用,以前不会玩这些,java打的不牢,后来看鸿洋的博客,对于封装这块用的特别多,忽然发现泛型的重要性,然后重回宿舍,拿起李刚的《疯狂java讲义》狂看,看完之后,原来是这样的啊,? extends basebean表现为集合数据里面存储的类型是basebean或是basebean的子类,也就是向下,如果是? super basebean 则存储的数据类型为basebean或basebean的父类,也就是向上,大概好像是这么理解的,如有错误,大家指出来喔,
我这边存储的数据类型model,bean都必须要继承basebean这个父类,因为泛型传递,所以我就这么做了,要是大家有什么好的方法的话,也可以告诉告诉我,就怕没有知识汲取。
basebean.class 和person.class
baseviewholder.class
baseviewholder这个类呢一般都是拿来优化recycleview的,然后拿到这个holder来设置数据,recycleadapter的oncreateviewholder方法将填充的item布局返回给了baseviewholder,然后将这个view设置为全局,下面的那些settext或是setimageresource等等,大家都可以自己扩展,这些方法都是提供设置view数据的。
好了,base封装基本上完成了,接下来就是怎么用了。
recycleadaptertest.class
最后就是泛型的强转,然后下面调用viewholder的设置数据,将资源id和数据传递过去,就设置好了。
哇塞,adapter这么少的啊,真的好爽,我都佩服自己了。
主mainactivity设置adapter就和普通设置数据一样一样的啦,基本没什么变化。
mainactivity.class
item布局就是一个textview,就没有什么了。
效果图
实力装了一次,以前看别人写这些代码,感觉好高大上啊,其实真的没有什么啊=_=,自己动手,丰衣足食。暑期以来第一篇,之前忙着看 安卓优化方面的书,等看完了,有了自己的心得,再来写一篇优化类的博文吧!!搞定!!