RecyclerView一个可以代替ListView和GridView的控件,那么RecyclerView到底比他们好在哪里?
RecyclerView架构提供了一种插拔式的体验,所以实现了代码的高度解耦,使用起来也异常的灵活。
我们可以通过设置它的LayoutManager控制其显示的方式,通过ItemDecoration控制Item间的间隔,通过ItemAnimator控制Item的增删动画
RecyclerView.LayoutManager提供了三个实现类其中LinearLayoutManager 现行管理器,支持横向、纵向,GridLayoutManager 网格布局管理器,StaggeredGridLayoutManager 瀑布就式布局管理器
那么先从LinearLayoutManager看起
先在gradle中引用compile 'com.Android.support:recyclerview-v7:23.4.0'
Activity布局文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
item布局文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
在Acitvity中初始化数据:
1 2 3 4 |
|
核心代码:
1 2 3 4 5 6 7 |
|
接下来自制adapter:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
再绘画它的分割线:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
|
好了,我们来看看效果:
嘛,貌似和ListView没什么区别,还这么麻烦
别急,我们试试GridLayoutManager
很简单,我们只需要改变LayoutManager和ItemDecoration就行了:
1 2 |
|
DividerGridItemDecoration代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 |
|
看下效果吧:
渍,有点意思,不过也没那么神乎其神啊
别忘了,我们还有个StaggeredGridLayoutManager没用
展示了那么多纵向的,我们来个横向的,同样改变LayoutManager
1 |
|
看下效果:
一个RecyclerView就能实现这么多功能,确实强大啊
不过,你以为这样就完了?下来要放大招了
免费学习更多精品课程,登录乐搏学院官网http://h.learnbo.cn/
看标题,瀑布流有木有,你用ListView不会那么简单就实现吧,但是用RecyclerView分分钟
稍微改变item布局,让图片放在字的上面
我们在onBindViewHolder给item设置随机高度:
1 2 |
|
看下大招效果:
我就问你6不6,6的话还不快关注我(嘎嘎)
好吧,可能吓到你了,什么?点击事件?
好吧,很不幸告诉你,要自己写,对,就是要自己写。
前面已经说过了,RecyclerView实现了高度解耦,非常的灵活(你要干什么,自己去写)。那就写吧!
先写个接口:
1 2 3 4 5 6 |
|
在adapter中加入代码:
1 2 3 4 5 |
|
onBindViewHolder方法中加入:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
然后在Activity中调用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
效果图:
怎么样?厉害吧。不过你以为这样就完了?
如果我想要将item托拉拽再加上侧滑删除呢?
首先,如果要实现托拉拽功能,那item长按事件还是不要写代码的,避免事件冲突
然后在Activity中加入代码:
1 2 |
|
callback代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
|
OK,我们来看看效果:
如果你喜欢我的文章,那就关注我的博客吧,我会不定期的发些技术贴
原文转自:乐搏学院http://www.learnbo.com/front/article/cmsIndex