Android推荐几款好用的开源作品(二)之万能RecyclerView适配器

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Android推荐几款好用的开源作品(二)之万能RecyclerView适配器前言:RecyclerView出现已经有一段时间了,我们肯定不陌生了,可以通过导入support-v7对其进行使用。根据官方的文档,该控件用于在有限的窗口中展示大量数据集,其实有了它就可以替代ListView、GridView了。了解RecyclerView架构,可以高度的解耦,异常的灵活,通过设置它提供的不同LayoutManager,ItemDecoration,ItemAnimator可以实现的想要的效果。1、首先介绍几种LayoutManager[java]viewplaincopy在CODE上查看代码片派生到我的代码片LinearLayoutManagermManager=newLinearLayoutManager(mContent);LinearLayoutManagermManager=newLinearLayoutManager(mContent,LinearLayoutManager.VERTICAL,false);//垂直布局,true表示左右翻转,false不翻转GridLayoutManagermManager=newGridLayoutManager(mContent,3);GridLayoutManagermManager=newGridLayoutManager(mContent,3,LinearLayoutManager.HORIZONTAL,false);//每行3列,水平,true表示左右翻转,false不翻转mRecyclerView.setLayoutManager(mManager);2、RecycleView简单使用[java]viewplaincopy在CODE上查看代码片派生到我的代码片//初始化控件mRecyclerView=findView(R.id.id_recyclerview);//设置布局管理器mManager=newLinearLayoutManager(mContent);mRecyclerView.setLayoutManager(mManager);//设置adaptermRecyclerView.setAdapter(mAdapter)//设置Item增加、移除动画mRecyclerView.setItemAnimator(newDefaultItemAnimator());//添加分割线mRecyclerView.addItemDecoration(newDividerItemDecoration(getActivity(),DividerItemDecoration.HORIZONTAL_LIST));3、接下来介绍的就是RecyclerView的适配器了,同样,RecyclerView和ListView,GridView一样需要adapter来填充数据,同样,自定义一个adapter需要继承RecyclerView.Adapter,代码需要实现几个父类方法onCreateViewHolder,onBindViewHolder,getItemCount(),根据名字就能知道:(1)onCreateViewHolder:主要返回的是拿到布局,进而返回ViewHolderreturnnewViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.list_cell,null));(2)onBindViewHolder:拿到ViewHolder中的控件对其赋值操作(3)getItemCount():返回数组的size()[java]viewplaincopy在CODE上查看代码片派生到我的代码片publicclassMyAdapterextendsRecyclerView.Adapter{classViewHolderextendsRecyclerView.ViewHolder{TextViewtvTitle,tvContent;publicViewHolder(ViewitemView){super(itemView);tvTitle=(TextView)itemView.findViewById(R.id.tv_title);tvContent=(TextView)itemView.findViewById(R.id.tv_content);}}@OverridepublicRecyclerView.ViewHolderonCreateViewHolder(ViewGroupparent,intviewType){returnnewViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.list_cell,null));}@OverridepublicvoidonBindViewHolder(RecyclerView.ViewHolderholder,intposition){ViewHoldervh=(ViewHolder)holder;CellDatacd=data[position];vh.tvTitle.setText(cd.title);vh.tvContent.setText(cd.content);}@OverridepublicintgetItemCount(){returndata.length;}privateCellData[]data=newCellData[]{newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错),newCellData(recycleview,学习recycleview),newCellData(天气,今天天气不错)};}4、效果图,虽然很难看,但是是基本的实现方式。可见,RecyclerView和传统的ListView,GridView使用的流程是一样的,但是由于RecyclerView的高定制性,使用者越来越多,已经有大部分的开发者放弃使用ListView和GridView了。想要用好RecyclerView也不难,关键就在于Adapter的书写上,接下来介绍一个非常好用的RecyclerView万能适配器(BaseRecyclerViewAdapterHelper),前几天接触到的,感觉十分好用,所包含的功能有以下几个(官网介绍):优化Adapter代码(减少百分之70%代码)添加点击item点击、长按事件、以及item子控件的点击事件添加加载动画(一行代码轻松切换5种默认动画)添加头部、尾部、下拉刷新、上拉加载(感觉又回到ListView时代)设置自定义的加载更多布局添加分组(随心定义分组头部)自定义不同的item类型(简单配置、无需重写额外方法)设置空布局(比Listview的setEmptyView还要好用!)添加拖拽item1、添加item点击、长按事件[java]viewplaincopy在CODE上查看代码片派生到我的代码片mQuickAdapter.setOnRecyclerViewItemClickListener();mQuickAdapter.setOnRecyclerViewItemLongClickListener();2、新增添加子布局多个控件的点击事件Adapter[java]viewplaincopy在CODE上查看代码片派生到我的代码片protectedvoidconvert(BaseViewHolderhelper,Statusitem){helper.setOnClickListener(R.id.tweetAvatar,newOnItemChildClickListener()).setOnClickListener(R.id.tweetName,newOnItemChildClickListener());}Activity[java]viewplaincopy在CODE上查看代码片派生到我的代码片mQuickAdapter.setOnRecyclerViewItemChildClickListener(

1 / 13
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功