ImageVerifierCode 换一换
格式:DOCX , 页数:38 ,大小:101.38KB ,
资源ID:16796584      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16796584.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(为RecyclerView打造通用Adapter文档格式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

为RecyclerView打造通用Adapter文档格式.docx

1、 rcv_history = (RecyclerView) findViewById(R.id.rcv_history);4.LinearLayoutManager 和 GrideLayouManager 两种显示风格/LinearLayoutManager(ListView)rcv_history.setLayoutManager(new (HistoryActivity.this);/GridLayoutManager(GrideView) /第二个参数 就是GridView一样 一行显示个个数rcv_history.setLayoutManager(new GridLayoutManag

2、er(HistoryActivity.this,2);rcv_history.setAdapter(Adapter);创建一个类继承RecycleView.Adapter5.RecycleView.Adapter= class HistoryAdapter extends RecyclerView.Adapter/指定泛型创建一个类 集成RecycleView.ViewHolder()/返回的是一个Holder Override /i不是下标 而是类型 如何实现了getItemViewType()/ /onCreateViewHolder加载对应布局,初始化对应的holder,每种布局对应自己

3、的holder public HistoryAdapter.MediaHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) MediaHolder holder = new MediaHolder(LayoutInflater.from(HistoryActivity.this).inflate(R.layout.item_history,null); View view = null; ViewHolder holder = null; switch(viewType )case. break/根据类型的不同加载对应的布局

4、return holder; class MediaHolder extends RecycleView.ViewHolder View view; public MediaHolder(View itemView) /构造器 itemView列表中的item,类似convertView super(itemView); this.view = itemView;/对item布局进行初始化 /textView = itemView.findViewById(R.id.textView); iv_item_history_icon = (ImageView) itemView.findViewB

5、yId(R.id.iv_item_history_icon); tv_item_history_title = (TextView) itemView.findViewById(R.id.tv_item_history_title); tv_item_history_duration = (TextView) itemView.findViewById(R.id.tv_item_history_duration); iv_item_history_del = (ImageView) itemView.findViewById(R.id.iv_item_history_del);6./onBin

6、dViewHolder 绑定对应的holder,加载对应的布局设置Item的显示 /第一个参数 onCreateViewHolder中返回的Holder类型 第二个参数指定的下标public void onBindViewHolder(HistoryAdapter.MediaHolder holder, final int position) holder.ivitemhistory_icon.setImageResource(); /返回Item的总大小Override public int getItemCount() if(mediaInfos!=null) return mediaIn

7、fos.size(); else return 0;7.自定义RecycleView的监听 1.自定义RecycleView 2.Adapter里设置监听1. 创建一个接口 public interface RecycleItemClickListener void onItemClickListener(View view,int position);2.声明变量 RecycleItemClickListener listener;3.set方法 public void setRecycleItemClickListener(RecycleItemClickListener recycleI

8、temClickListener) this.recycleItemClickListener = recycleItemClickListener;4.实现的地方 /在Hodler中 得到itemVidew对象 /this.view = itemView;在ViewHolder个构造器里获得其View 在onBindViewHolder下/在此才有position public void onBindViewHolder(HistoryAdapter.MediaHolder holder, final int position) holder.view.setOnClickListener(

9、new OnClickListener() public void onClick(View v) if(listener!=null) listener.onItemClickListener(holder.view,position) );5.实现监听 adapter.setRecycleItemClickListener(new RecycleItemClickListener( public void onItemClickListener(holder.view,position) /对其进行一系列的操作 )-详细使用采用LayoutManager来处理Item的布局提供Item操作

10、的默认动画,例如在增加或者删除item的时候为了使用RecyclerView控件,我们需要创建一个Adapter和一个LayoutManager:Adapter:继承自RecyclerView.Adapetr类,主要用来将数据和布局item进行绑定。LayoutManager:布局管理器,设置每一项view在RecyclerView中的位置布局以及控件item view的显 示或者隐藏。当View重用或者回收的时候,LayoutManger都会向Adapter来请求新的数据来进行替换原来数据的内容。这种回收重用的机制可以提供性能,避免创建很多的view或者是频繁的调用findViewById方

11、法。这种机制和ListView还是很相似的。RecyclerView提供了三种内置的LayoutManager:LinearLayoutManager:线性布局,横向或者纵向滑动列表GridLayoutManager:表格布局StaggeredGridLayoutManager:流式布局,例如瀑布流效果优点:插拔式,高度的解耦,异常灵活#主要API LayoutManager:布局管理器(LinearLayoutManager 、GridLayoutManager、StaggeredGridLayoutManager) ItemDecoration:绘制Item间的间隔 ItemAnimato

12、r:Item增删的动画#使用步骤1.build.gradle中添加 dependencies compile2.布局内添加 3.代码中初始化并设置 RecyclerView recycleView = findView(R.id.recyclerview);设置布局管理器 LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this);/线性 GridLayoutManager gridLayoutManager=new GridLayoutManager(this,4);/网格 StaggeredGridLayout

13、Manager staggeredGridLayoutManager=new StaggeredGridLayoutManager(4,StaggeredGridLayoutManager.VERTICAL);/流式设置布局管理器的方向 linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);设置 recyclerView.setLayoutManager(layout); recycl

14、erView.setAdapter(adapter); recyclerView.addItemDecoration(new DividerGridItemDecoration(this);/添加分割线,继承RecyclerView.ItemDecoration recyclerView.setItemAnimator(new DefaultItemAnimator();/设置默认Item增删动画#Adapter的实现1.自定义类继承RecycleView的Adapter同时绑定ViewHolder class MyAdapter extends RecyclerView.Adapter2.实

15、现方法 public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) LayoutInflater mInflater = LayoutInflater.from(context); MyViewHolder holder = new MyViewHolder(mInflater.inflate( R.layout.item_home, parent, false); public void onBindViewHolder(MyViewHolder holder, int position) holder.tv.

16、setText(mDatas.get(position); public int getItemCount() return mDatas.size();3.MyViewHolder class MyViewHolder extends RecyclerView.ViewHolder TextView tv; public MyViewHolder(View view) super(view); tv = (TextView) view.findViewById(R.id.id_num);#增删Item的动画 mDatas.add(position, Insert One); notifyIt

17、emInserted(position);/增加 mDatas.remove(position); notifyItemRemoved(position);/删除#设置点击监听1.在Adapter中自定义监听 public interface OnItemClickLitener void onItemClick(View view, int position); void onItemLongClick(View view, int position); private OnItemClickLitener mOnItemClickLitener; public void setOnItem

18、ClickLitener(OnItemClickLitener mOnItemClickLitener) this.mOnItemClickLitener = mOnItemClickLitener;2.在onBindViewHolder方法中绑定 if (mOnItemClickLitener != null) holder.itemView.setOnClickListener(new OnClickListener() public void onClick(View v) int pos = holder.getLayoutPosition(); mOnItemClickLitener

19、.onItemClick(holder.itemView, pos); holder.itemView.setOnLongClickListener(new OnLongClickListener() public boolean onLongClick(View v) mOnItemClickLitener.onItemLongClick(holder.itemView, pos); removeData(pos); return false;3.在Activity中设置监听 mAdapter.setOnItemClickLitener(new HomeAdapter.OnItemClick

20、Litener() public void onItemClick(View view, int position) Toast.makeText(HomeActivity.this, position + click, Toast.LENGTH_SHORT).show(); public void onItemLongClick(View view, int position) long click#分类型的RecycleView1.MyAdapter继承RecyclerView.Adapter2.通过枚举定义不同的Item /枚举Item public enum ITEM_TYPE ITE

21、M1, ITEM2, ITEM3, ITEM43.根据不同的Item加载不同的ViewHolder public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) /加载的时候,根据不同的Item加载不同的布局 /Enum类提供了一个ordinal()方法,返回枚举类型的序数,这里ITEM_TYPE.ITEM1.ordinal()代表0, ITEM_TYPE.ITEM2.ordinal()代表1 if (viewType = ITEM_TYPE.ITEM1.ordinal() return ne

22、w Item1ViewHolder(layoutInflater.inflate(R.layout.item1, parent, false); else if (viewType = ITEM_TYPE.ITEM2.ordinal() return new Item2ViewHolder(layoutInflater.inflate(R.layout.item2, parent, false); else if (viewType = ITEM_TYPE.ITEM3.ordinal() return new Item3ViewHolder(layoutInflater.inflate(R.l

23、ayout.item3, parent, false); else return new Item4ViewHolder(layoutInflater.inflate(R.layout.item4, parent, false);4.根据position返回不同类型的Item public int getItemViewType(int position) if (position item1.size() return ITEM_TYPE.ITEM1.ordinal(); else if (position item2.size()+item1.size() return ITEM_TYPE

24、.ITEM2.ordinal(); item3.size()+item2.size()+item1.size() return ITEM_TYPE.ITEM3.ordinal(); item4.size()+item3.size()+item2.size()+item1.size() return ITEM_TYPE.ITEM4.ordinal(); return super.getItemViewType(position);5.根据Item的类型设置数据 public void onBindViewHolder(RecyclerView.ViewHolder holder, int pos

25、ition) /根据holder的类型设置数据 if (holder instanceof Item1ViewHolder) if(positionitem1.size()&positionitem1.size()+item2.size() (Item2ViewHolder) holder).tv2.setText(item2.get(position); else .6.返回总数量 return item1.size() + item2.size() + item3.size() + item4.size();7.创建ViewHolder public static class Item1ViewHolder extends RecyclerView.ViewHolder public Item1ViewHolder(View itemView) super(item

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1