不同的viewholder实现item的多元化,但是没有像ListView中的onItemClickListener监听事件,需要开发者自己去实现
首先新建一个项目名字叫RecycleViewTest ,在project/app/src/bulid.gradle中引入闭包 这个闭包在引用过程中,不同的版本可能需要不同的闭包(本次引入的闭包是compile'com.android.support:design:26.1.0')
具体来说:
前期的准备工作:
设置LayoutManager,这个LayoutManager用于指定RecyclerView的布局方式,setLayoutManager()方法中可以传入不同的布局管理器,比如LinearlayoutManager, GridLayoutManager等等..
然后setAdapter();所以需要我们去写一个Adapter
下一步将泛型传入Adapter
LinearAdapter类下的LinearViewHolder(因为LinearViewHolder类在LinearAdapter类里面).
在onCreateViewHolder方法中返回一个new LinearViewHolder()(new LinearViewHolder()需要传入一个View itemView的参数,这个view便是我们的每个viewitem长什么样子的布局),我们先把这个布局画一下.在布局中简单的放置了一个TextView布局名称为layout_linear_item
然后onCreateViewHolder这个方法我们就搞完了,这个方法需要我们返回一个ViewHolder我们便return了一个 new LinearViewHolder,这个viewHolder里面要传入一个布局我们借助LayoutInflater传入了一个布局进去
然后在LinearViewHolder里面我们便可以把我们即将要在布局中使用的控件声明一下,
然后可以在onBindViewHolder中我们可以通过这个vieHolder去设置一些内容
最后将我们写好的LinearAdapter放入setAdapter中
我们还可以在recyclerview中实现各种各样的样式采用的方法是addItemDecoration方法 mRvMain.addItemDecoration();其中ItemDecoration是一个抽象类,里面有三个方法.分别是onDraw,onDrawOver,getItemOffsets.
onDraw:在我们视图被绘制之前我们可以在绘制之前先绘制一些内容,相当于你先绘制了一个背景,然后在这个背景上面绘制一些东西,然后它才开始把这个item放在背景上面.
onDrawOver:是后绘制的,也就是说你的这个item都绘制完了,然后它在你每个item元素上面在进行绘制,也就是说你的item已经成了背景,先把你的item放上去,然后在你的item上面再绘制一些内容.
getItemOffsets:在你的item周边绘制一些内容
实现点击事件
在LinearAdapter中的onBindViewHolder方法中holder.itemView.setOnClickListener()
第二种方法:通过回调方法来实现在Adapter里写一个接口然后在activity中通过回调方法来实现点击事件