版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第 14 讲_RecyclerView1_创建 RecyclerViewDemo在 build.gradle 配置 RecyclerView 的库2_在布局文件写定义 RecyclerView3_在代码中实例化 RecyclerView 并且初始化数据1/* 数据集合compile com.android.support:recyclerview-v7:23.3.04_设置适配器(难点重点)1.定义适配器2public class MyAdapter extendsRecyclerView.Adapter private final Context context;private final
2、ArrayList datas;public MyAdapter(Context context,ArrayList datas)this.context = context;this.datas = datas;/*Overrideprotected void onCreate(Bundle savedInstane) super.onCreate(savedInstane); setContentView(R.layout.activity_main);recyclerview = (RecyclerView) findViewById(R.id.recyclerview); initDa
3、ta();/* 初始化数据*/private void initData() datas = new ArrayList();for (i = 0; i 100; i+) datas.add(Content + i);*/private ArrayList datas;3相当于 ListView 适配器中的 getView 的创建 holder 布局*pararentparam viewTypereturn*/Overridepublic MyViewHolder onCreateViewHolder(ViewGroup parent,viewType)View view = View.inf
4、late(context, R.layout.item_o, null); return new MyViewHolder(view);Overridepublic void onBindViewHolder(MyViewHolder holder,ition) holder.tv_text.setText(datas.get(ition); holder.iv_icon.setBackgroundResource(R.mipmap.ic_launcher);OverridepublicgetItemCount() return datas.size();class MyViewHolder
5、extends RecyclerView.ViewHolder private TextView tv_text; private ImageView iv_icon;public MyViewHolder(View itemView) super(itemView);tv_text = (TextView) itemView.findViewById(R.id.tv_text);iv_icon = (ImageView) itemView.findViewById(R.id.iv_icon);2.设置布局文件45_设置适配器-水平方向-竖直方向-网格-瀑布流6_设置分割线参照:5/设置分割线
6、-分割线需要自定义&还可以自定义分割线的样式/没有提供默认的分割线recyclerview.addItemDecoration(new DividerListItemDecoration(this, DividerListItemDecoration.VERTICAL_LIST);public class DividerListItemDecoration extends RecyclerView.ItemDecorationmyAdapter = new MyAdapter(this,datas);recyclerview.setAdapter(myAdapter);/*设置布局:第一个参数
7、:上下文第二参数:方向第三个参数:排序低到高还是高到低显示,false 是低到高显示*/LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3,GridLayoutManager.VERTICAL, false);StaggeredGridLayoutManager staggeredGridLayo
8、utManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.HORIZONTAL); recyclerview.setLayoutManager(linearLayoutManager);6private sic final ATTRS = new android.R.attr.listDivider;public sic finalHORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL;public sic finalVERTICAL_LIST = LinearLay
9、outManager.VERTICAL;private Drawable mDivider; privatemOrienion;public DividerListItemDecoration(Context context,orienion) final TypedArray a = context.obtainStyledAttributes(ATTRS); mDivider = a.getDrawable(0);a.recycle();setOrienion(orienion);public void setOrienion(orienion) if (orienion != HORIZ
10、ONTAL_LIST & orienion != VERTICAL_LIST)throw new IllegalArgumentException(invalid orienion);mOrienion = orienion;Overridepublic void onDraw(Canvas c, RecyclerVierent) /Log.e(recyclerview - itemdecoration, onDraw();if (mOrienion = VERTICAL_LIST) drawVertical(c, parent); else drawHorizontal(c, parent)
11、;public void drawVertical(Canvas c, RecyclerVierent) 7finalleft = parent.getPaddingLeft();finalright = parent.getWidth() - parent.getPaddingRight();finalchildCount = parent.getChildCount();for (i = 0; i childCount; i+) final View child = parent.getChildAt(i); android.support.v7.widget.RecyclerView v
12、 = newandroid.support.v7.widget.RecyclerVierent.getContext();final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();finaltop = child.getBottom() + params.bottomMargin; finalbottom = top + mDivider.getrinsicHeight(); mDivider.setBounds(left, top, right, bottom);
13、mDivider.draw(c);public void drawHorizontal(Canvas c, RecyclerVierent) finaltop = parent.getPaddingTop();finalbottom = parent.getHeight() - parent.getPaddingBottom();finalchildCount = parent.getChildCount();for (i = 0; i childCount; i+) final View child = parent.getChildAt(i); final RecyclerView.Lay
14、outParams params =(RecyclerView.LayoutParams) child.getLayoutParams();finalleft = child.getRight() + params.rightMargin; finalright = left + mDivider.getrinsicHeight(); mDivider.setBounds(left, top, right, bottom); mDivider.draw(c);Overridepublic void getItemOffsets(Rect outRect,itemition, RecyclerV
15、iew parent) if (mOrienion = VERTICAL_LIST) outRect.set(0, 0, 0, mDivider.getrinsicHeight(); else outRect.set(0, 0, mDivider.getrinsicWidth(), 0);设置分割线样式在 styles.xml 样式文件中8color/colorPrimarycolor/colorPrimaryDarkcolor/colorAccentdrawable/divider_bgdrawable/divider_bg在 drawable 目录下的 divider_bg.xml7_自定
16、义设置item 的点击事件或者item 中某个控件的点击事件RecyclerView 默认是没有点击事件的,需要自定义点击事件用到知识点:接口,getLayoutition()9public class MyAdapter extends RecyclerView.Adapterprivate final Context context;private final ArrayList datas;/设置点击某个 item 的publicerface OnItemClickListenervoid onItemClick(View view,ition,String content);priva
17、te OnItemClickListener onItemClickListener;/*设置某条的param onItemClickListener*/public void setOnItemClickListener(OnItemClickListener onItemClickListener) this.onItemClickListener = onItemClickListener;/设置点击/设置点击某个 item 的publicerface OnImageViewClickListenervoid onImageViewClick(View view,ition);10pri
18、vate OnImageViewClickListener onImageViewClickListener;/*设置param onImageViewClickListener*/public void setOnImageViewClickListener(OnImageViewClickListener onImageViewClickListener) this.onImageViewClickListener = onImageViewClickListener;.class MyViewHolder extends RecyclerView.ViewHolder private T
19、extView tv_text; private ImageView iv_icon;public MyViewHolder(View itemView) super(itemView);tv_text = (TextView) itemView.findViewById(R.id.tv_text);iv_icon = (ImageView) itemView.findViewById(R.id.iv_icon);/设置点击事件itemView.setOnClickListener(new View.OnClickListener() Overridepublic void onClick(V
20、iew v) if(onItemClickListener != null)onItemClickListener.onItemClick(v,getLayoutition(),datas.get(getLayo utition(););/设置iv_icon.setOnClickListener(new View.OnClickListener() Overridepublic void onClick(View v) if(onImageViewClickListener != null)11onImageViewClickListener.onImageViewClick(v,getLay
21、outition(););在 Activity 中使用自定义的点击事件/设置点击 item 的点击事件myAdapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() Overridepublic void onItemClick(View view,ition, String content) Toast.makeText(RecyclerViewActivity.this,content=+content+,-ition=+ition, Toast.LENGTH_SHORT).show(););/设置点击某张的点击事件
22、myAdapter.setOnImageViewClickListener(newMyAdapter.OnImageViewClickListener() Overridepublic void onImageViewClick(View view,ition) Toast.makeText(RecyclerViewActivity.this,ition=+ition+,view=+view.toString(), Toast.LENGTH_SHORT).show(););8_删除和增加数据1_在适配器中新增加添加和删除两个方法2_在布局文件中添加点击按钮如图:12public class M
23、yAdapter extends RecyclerView.Adapter./*添加数据parositionparam content*/public void addData(ition,String content) datas.add(ition,content); notifyItemInserted(ition);/*移除数据parosition*/public void removeData(ition) datas.remove(ition); notifyItemRemoved(ition);代码如下:133_点击事件14private void setLitener() btn_add.setOnClickListener(new View.OnClickListener() Overridepublic void onClick(View v) 9_设置删除某条和增加某条的动画没有设置的情况是默认有动画的,也可以自己设置15myAdapter.addData(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理部护理文书书写规范考核
- 传热学研究生行业
- 护理专业春季高考:护理实践与护理科研
- 2025年前台电话礼仪试卷
- 护理信息学在护理信息系统应用中的作用
- 床上洗头护理的职业发展
- 护士查房中的护理团队建设
- 护理小组长心理健康管理
- 2026年医疗废物管理条例试题及答案
- 2026三年级数学下册 商末尾有0的除法
- 天津中考高频词汇英语300个
- 卢氏结构全文
- 2023-2024学年河北省邢台市八下英语期末监测试题含答案
- 2024年江苏航运职业技术学院单招职业适应性测试题库及答案1套
- 科室医疗质量与安全管理小组工作制度
- ORACLE ERP EBS财务全模块操作手册中文版
- 广东省安全生产治本攻坚三年行动实施方案(2024-2026年)
- 小学心理健康辅导家长会
- 鼓膜穿孔护理
- 物料齐套改善焦点课题
- 水准测量平差表(含公式可自动计算)
评论
0/150
提交评论