Android推荐几款好用的开源作品二之万能RecyclerView适配器讲解Word格式.docx

上传人:b****1 文档编号:5858072 上传时间:2023-05-05 格式:DOCX 页数:20 大小:113.60KB
下载 相关 举报
Android推荐几款好用的开源作品二之万能RecyclerView适配器讲解Word格式.docx_第1页
第1页 / 共20页
Android推荐几款好用的开源作品二之万能RecyclerView适配器讲解Word格式.docx_第2页
第2页 / 共20页
Android推荐几款好用的开源作品二之万能RecyclerView适配器讲解Word格式.docx_第3页
第3页 / 共20页
Android推荐几款好用的开源作品二之万能RecyclerView适配器讲解Word格式.docx_第4页
第4页 / 共20页
Android推荐几款好用的开源作品二之万能RecyclerView适配器讲解Word格式.docx_第5页
第5页 / 共20页
Android推荐几款好用的开源作品二之万能RecyclerView适配器讲解Word格式.docx_第6页
第6页 / 共20页
Android推荐几款好用的开源作品二之万能RecyclerView适配器讲解Word格式.docx_第7页
第7页 / 共20页
Android推荐几款好用的开源作品二之万能RecyclerView适配器讲解Word格式.docx_第8页
第8页 / 共20页
Android推荐几款好用的开源作品二之万能RecyclerView适配器讲解Word格式.docx_第9页
第9页 / 共20页
Android推荐几款好用的开源作品二之万能RecyclerView适配器讲解Word格式.docx_第10页
第10页 / 共20页
Android推荐几款好用的开源作品二之万能RecyclerView适配器讲解Word格式.docx_第11页
第11页 / 共20页
Android推荐几款好用的开源作品二之万能RecyclerView适配器讲解Word格式.docx_第12页
第12页 / 共20页
Android推荐几款好用的开源作品二之万能RecyclerView适配器讲解Word格式.docx_第13页
第13页 / 共20页
Android推荐几款好用的开源作品二之万能RecyclerView适配器讲解Word格式.docx_第14页
第14页 / 共20页
Android推荐几款好用的开源作品二之万能RecyclerView适配器讲解Word格式.docx_第15页
第15页 / 共20页
Android推荐几款好用的开源作品二之万能RecyclerView适配器讲解Word格式.docx_第16页
第16页 / 共20页
Android推荐几款好用的开源作品二之万能RecyclerView适配器讲解Word格式.docx_第17页
第17页 / 共20页
Android推荐几款好用的开源作品二之万能RecyclerView适配器讲解Word格式.docx_第18页
第18页 / 共20页
Android推荐几款好用的开源作品二之万能RecyclerView适配器讲解Word格式.docx_第19页
第19页 / 共20页
Android推荐几款好用的开源作品二之万能RecyclerView适配器讲解Word格式.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Android推荐几款好用的开源作品二之万能RecyclerView适配器讲解Word格式.docx

《Android推荐几款好用的开源作品二之万能RecyclerView适配器讲解Word格式.docx》由会员分享,可在线阅读,更多相关《Android推荐几款好用的开源作品二之万能RecyclerView适配器讲解Word格式.docx(20页珍藏版)》请在冰点文库上搜索。

Android推荐几款好用的开源作品二之万能RecyclerView适配器讲解Word格式.docx

//初始化控件

mRecyclerView=findView(R.id.id_recyclerview);

//设置布局管理器

mManager=newLinearLayoutManager(mContent);

//设置adapter

mRecyclerView.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:

主要返回的是拿到布局,进而返回ViewHolder

returnnewViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.list_cell,null));

(2)onBindViewHolder:

拿到ViewHolder中的控件对其赋值操作

(3)getItemCount():

返回数组的size()

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);

}

@Override

publicRecyclerView.ViewHolderonCreateViewHolder(ViewGroupparent,intviewType){

publicvoidonBindViewHolder(RecyclerView.ViewHolderholder,intposition){

ViewHoldervh=(ViewHolder)holder;

CellDatacd=data[position];

vh.tvTitle.setText(cd.title);

vh.tvContent.setText(cd.content);

publicintgetItemCount(){

returndata.length;

privateCellData[]data=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还要好用!

添加拖拽item

1、添加item点击、长按事件

mQuickAdapter.setOnRecyclerViewItemClickListener();

mQuickAdapter.setOnRecyclerViewItemLongClickListener();

2、新增添加子布局多个控件的点击事件

Adapter

protectedvoidconvert(BaseViewHolderhelper,Statusitem){

helper.setOnClickListener(R.id.tweetAvatar,newOnItemChildClickListener())

.setOnClickListener(R.id.tweetName,newOnItemChildClickListener());

Activity

mQuickAdapter.setOnRecyclerViewItemChildClickListener(newBaseQuickAdapter.OnRecyclerViewItemChildClickListener(){

publicvoidonItemChildClick(BaseQuickAdapteradapter,Viewview,intposition){

Stringcontent=null;

Statusstatus=(Status)adapter.getItem(position);

switch(view.getId()){

caseR.id.tweetAvatar:

content="

img:

"

+status.getUserAvatar();

break;

caseR.id.tweetName:

name:

+status.getUserName();

Toast.makeText(AnimationUseActivity.this,content,Toast.LENGTH_LONG).show();

});

3、添加动画

//一行代码搞定(默认为渐显效果)

quickAdapter.openLoadAnimation();

//默认提供5种方法(渐显、缩放、从下到上,从左到右、从右到左)

quickAdapter.openLoadAnimation(BaseQuickAdapter.ALPHAIN);

//自定义动画如此轻松

quickAdapter.openLoadAnimation(newBaseAnimation(){

publicAnimator[]getAnimators(Viewview){

returnnewAnimator[]{

ObjectAnimator.ofFloat(view,"

scaleY"

1,1.1f,1),

scaleX"

1,1.1f,1)

};

4、添加头部和尾部

mQuickAdapter.addHeaderView(getView());

mQuickAdapter.addFooterView(getView());

5、上拉加载更多

mQuickAdapter.openLoadMore(PAGE_SIZE,true);

//必须设置pageSize,否则上拉不会加载,pageSize一般为每次请求需要加载的数据条数

mQuickAdapter.setOnLoadMoreListener(newBaseQuickAdapter.RequestLoadMoreListener(){

publicvoidonLoadMoreRequested(){

mRecyclerView.post(newRunnable(){

publicvoidrun(){

if(mCurrentCounter>

=TOTAL_COUNTER){

mQuickAdapter.notifyDataChangedAfterLoadMore(false);

}else{

mQuickAdapter.notifyDataChangedAfterLoadMore(DataServer.getSampleData(PAGE_SIZE),true);

mCurrentCounter=mQuickAdapter.getItemCount();

可以通过mQuickAdapter.setLoadingView(customView);

自定义加载更多的布局

6、使用分组

publicclassSectionAdapterextendsBaseSectionQuickAdapter<

MySection>

{

publicSectionAdapter(intlayoutResId,intsectionHeadResId,Listdata){

super(layoutResId,sectionHeadResId,data);

protectedvoidconvert(BaseViewHolderhelper,MySectionitem){

helper.setImageUrl(R.id.iv,(String)item.t);

protectedvoidconvertHead(BaseViewHolderhelper,finalMySectionitem){

helper.setText(R.id.header,item.header);

else

helper.setOnClickListener(R.id.more,newView.OnClickListener(){

publicvoidonClick(Viewv){

Toast.makeText(context,item.header+"

more.."

Toast.LENGTH_LONG).show();

7、添加多种类型Item

publicclassMultipleItemQuickAdapterextendsBaseMultiItemQuickAdapter<

MultipleItem>

publicMultipleItemQuickAdapter(Listdata){

super(data);

addItemType(MultipleItem.TEXT,R.layout.text_view);

addItemType(MultipleItem.IMG,R.layout.image_view);

protectedvoidconvert(BaseViewHolderhelper,MultipleItemitem){

switch(helper.getItemViewType()){

caseMultipleItem.TEXT:

helper.setImageUrl(R.id.tv,item.getContent());

caseMultipleItem.IMG:

helper.setImageUrl(R.id.iv,item.getContent());

8、使用setEmptyView

mQuickAdapter.setEmptyView(getView());

9、使用拖拽与滑动删除

OnItemDragListeneronItemDragListener=newOnItemDragListener(){

publicvoidonItemDragStart(RecyclerView.ViewHolderviewHolder,intpos){}

publicvoidonItemDragMoving(RecyclerView.ViewHoldersource,intfrom,RecyclerView.ViewHoldertarget,intto){}

publicvoidonItemDragEnd(RecyclerView.ViewHolderviewHolder,intpos){}

OnItemSwipeListeneronItemSwipeListener=newOnItemSwipeListener(){

publicvoidonItemSwipeStart(RecyclerView.ViewHolderviewHolder,intpos){}

publicvoidclearView(RecyclerView.ViewHolderviewHolder,intpos){}

publicvoidonItemSwiped(RecyclerView.ViewHolderviewHolder,intpos){}

};

ItemDragAndSwipeCallbackitemDragAndSwipeCallback=newItemDragAndSwipeCallback(mAdapter);

ItemTouchHelperitemTouchHelper=newItemTouchHelper(itemDragAndSwipeCal

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2