RecycleView

不同的viewholder实现item的多元化,但是没有像ListView中的onItemClickListener监听事件,需要开发者自己去实现

首先新建一个项目名字叫RecycleViewTest ,在project/app/src/bulid.gradle中引入闭包  这个闭包在引用过程中,不同的版本可能需要不同的闭包(本次引入的闭包是compile'com.android.support:design:26.1.0')

具体来说:

RecycleView_第1张图片
1

前期的准备工作:


RecycleView_第2张图片
2


RecycleView_第3张图片
3
RecycleView_第4张图片
4
RecycleView_第5张图片
5
RecycleView_第6张图片
6

设置LayoutManager,这个LayoutManager用于指定RecyclerView的布局方式,setLayoutManager()方法中可以传入不同的布局管理器,比如LinearlayoutManager, GridLayoutManager等等..

然后setAdapter();所以需要我们去写一个Adapter

RecycleView_第7张图片
7
RecycleView_第8张图片
8
RecycleView_第9张图片
9
RecycleView_第10张图片
10
RecycleView_第11张图片
11

下一步将泛型传入Adapter

RecycleView_第12张图片
12

LinearAdapter类下的LinearViewHolder(因为LinearViewHolder类在LinearAdapter类里面).

在onCreateViewHolder方法中返回一个new LinearViewHolder()(new LinearViewHolder()需要传入一个View itemView的参数,这个view便是我们的每个viewitem长什么样子的布局),我们先把这个布局画一下.在布局中简单的放置了一个TextView布局名称为layout_linear_item

RecycleView_第13张图片
13

然后onCreateViewHolder这个方法我们就搞完了,这个方法需要我们返回一个ViewHolder我们便return了一个 new LinearViewHolder,这个viewHolder里面要传入一个布局我们借助LayoutInflater传入了一个布局进去

然后在LinearViewHolder里面我们便可以把我们即将要在布局中使用的控件声明一下,

RecycleView_第14张图片
14

然后可以在onBindViewHolder中我们可以通过这个vieHolder去设置一些内容

RecycleView_第15张图片
15

最后将我们写好的LinearAdapter放入setAdapter中

RecycleView_第16张图片
16

我们还可以在recyclerview中实现各种各样的样式采用的方法是addItemDecoration方法 mRvMain.addItemDecoration();其中ItemDecoration是一个抽象类,里面有三个方法.分别是onDraw,onDrawOver,getItemOffsets.

onDraw:在我们视图被绘制之前我们可以在绘制之前先绘制一些内容,相当于你先绘制了一个背景,然后在这个背景上面绘制一些东西,然后它才开始把这个item放在背景上面.

onDrawOver:是后绘制的,也就是说你的这个item都绘制完了,然后它在你每个item元素上面在进行绘制,也就是说你的item已经成了背景,先把你的item放上去,然后在你的item上面再绘制一些内容.

getItemOffsets:在你的item周边绘制一些内容

RecycleView_第17张图片
17

实现点击事件

在LinearAdapter中的onBindViewHolder方法中holder.itemView.setOnClickListener()

RecycleView_第18张图片
18

第二种方法:通过回调方法来实现在Adapter里写一个接口然后在activity中通过回调方法来实现点击事件

RecycleView_第19张图片
19
RecycleView_第20张图片
20
RecycleView_第21张图片
21
RecycleView_第22张图片
22

你可能感兴趣的:(RecycleView)