RecyclerView的使用及配合CardView使用
来源:互联网 发布:linux下shell脚本编程 编辑:程序博客网 时间:2024/06/05 10:56
RecyclerView
概述
RecyclerView出现已经有一段时间了,大家可以通过导入support-v7对其进行使用。 据官方的介绍,该控件用于在有限的窗口中展示大量数据集,其实这样功能的控件我们并不陌生,例如:ListView、GridView。那么有了ListView、GridView为什么还需要RecyclerView这样的控件呢?整体上看RecyclerView架构,提供了一种插拔式的体验,高度的解耦,异常的灵活,通过设置它提供的不同LayoutManager,ItemDecoration , ItemAnimator实现令人瞠目的效果。你想要控制其显示的方式,请通过布局管理器LayoutManager你想要控制Item间的间隔(可绘制),请通过ItemDecoration你想要控制Item增删的动画,请通过ItemAnimator你想要控制点击、长按事件,请自己写
了解
LayoutManager
ItemDecoration
ItemAnimator
RecyclerView.Adapter
一 使用
使用1: RecyclerView配合LinearLayoutManager使用!显示ListView效果 目的:了解RecyclerView使用! 了解RecyclerView.Adapter使用! 了解自定义ViewHolder 继承RecyclerView包下的ViewHolder 步骤: 1.初始化控件 2.设置LayoutManager /* 参数1:上下文对象 参数2:排列方向 参数3:数据是否反向显示 */ LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,true); recyclerView.setLayoutManager(linearLayoutManager); 3.创建设置Adapter class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.MyViewHoler>{ @Override public MyViewHoler onCreateViewHolder(ViewGroup parent, int viewType) @Override public void onBindViewHolder(MyViewHoler holder, int position) { @Override public int getItemCount() { class MyViewHoler extends RecyclerView.ViewHolder{ private TextView textView; public MyViewHoler(View itemView) { super(itemView); textView = (TextView) itemView.findViewById(R.id.activity_recyclerView_item_textId); 4.设置Adapter即可使用2: RecyclerView配合GridLayoutManager使用!显示GridView效果 LayoutManager使用 GridLayoutManager使用3: RecyclerView配合StaggeredGridLayoutManager使用!显示瀑布流效果 LayoutManager使用 StaggeredGridLayoutManager 注意事项: 使用StaggeredGridLayoutManager显示瀑布流效果!需要在Adapter的onBindViewHolder方法 自己制定控件的宽和高
二 RecyclerView点击事件
RecyclerView自身不能相ListView和GridView一样 有Item点击事件!需要自己手动添加点击事件!一下就是添加点击事件的流程! 1.onBindViewHolder方法中给控件设置监听事件! 2.使用Adapter对应的Activity传递监听事件 传递方法:1.Adapter的构造方法传递! 必须实现 2.通过set方法传递!比较灵活,可以根绝自行调用决定! 注意:设置控件的单机事件和长按事件是有冲突的!如果长按事件返回值false 那么也会触发单击事件!如果返回ture那么!不会触发单击事件!
三 RecyclerView 配合CardView使用
CardView特殊属性 这个FrameLayout特殊点就是有rounded corner(圆角)和shadow(阴影),这个就是它的特殊之处,回首往日,我们需要自定义shape文件进行实现圆角和阴影的设计,现在google的大牛已经把它设计为CardView的属性供我们设置进行使用。下面我们看看CardView新增了哪些属性: <resources> <declare-styleable name="CardView"> <!-- Background color for CardView. --> <!-- 背景色 --> <attr name="cardBackgroundColor" format="color" /> <!-- Corner radius for CardView. --> <!-- 边缘弧度数 --> <attr name="cardCornerRadius" format="dimension" /> <!-- Elevation for CardView. --> <!-- 高度 --> <attr name="cardElevation" format="dimension" /> <!-- Maximum Elevation for CardView. --> <!-- 最大高度 --> <attr name="cardMaxElevation" format="dimension" /> <!-- Add padding in API v21+ as well to have the same measurements with previous versions. --> <!-- 设置内边距,v21+的版本和之前的版本仍旧具有一样的计算方式 --> <attr name="cardUseCompatPadding" format="boolean" /> <!-- Add padding to CardView on v20 and before to prevent intersections between the Card content and rounded corners. --> <!-- 在v20和之前的版本中添加内边距,这个属性是为了防止卡片内容和边角的重叠 --> <attr name="cardPreventCornerOverlap" format="boolean" /> <!-- 下面是卡片边界距离内部的距离--> <!-- Inner padding between the edges of the Card and children of the CardView. --> <attr name="contentPadding" format="dimension" /> <!-- Inner padding between the left edge of the Card and children of the CardView. --> <attr name="contentPaddingLeft" format="dimension" /> <!-- Inner padding between the right edge of the Card and children of the CardView. --> <attr name="contentPaddingRight" format="dimension" /> <!-- Inner padding between the top edge of the Card and children of the CardView. --> <attr name="contentPaddingTop" format="dimension" /> <!-- Inner padding between the bottom edge of the Card and children of the CardView. --> <attr name="contentPaddingBottom" format="dimension" /> </declare-styleable> </resources> CardView5.0手机不能直接使用 需要在外层嵌套一层布局 添加Margin属性 或者使用cardUseCompatPadding = true
四 RecyclerView多套布局显示
@Overridepublic int getItemViewType(int position) { int type = position%2; return type;}@Overridepublic RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { RecyclerView.ViewHolder holder=null; LayoutInflater from = LayoutInflater.from(context); if (viewType == 0){ View view = from.inflate(R.layout.item_layout_one, parent, false); holder= new OneViewHolder(view); }else if (viewType == 1){ View view = from.inflate(R.layout.item_layout_two, parent, false); holder = new TwoViewHolder(view); } return holder;}@Overridepublic void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { int itemViewType = getItemViewType(position); switch (itemViewType) { case 0: OneViewHolder oneViewHolder = (OneViewHolder) holder; oneViewHolder.textView.setText("类型是0的数据"+data.get(position)); break; case 1: TwoViewHolder twoViewHolder = (TwoViewHolder) holder; twoViewHolder.textView.setText("类型是1的数据"+data.get(position)); break; }
五 RecyclerView下拉刷新上拉加载更多
RecyclerView下拉刷新 需要配个SwipRefreshLayout进行 SwipRefreshLayout常用属性和方法 1、setOnRefreshListener(SwipeRefreshLayout.OnRefreshListener listener):设置手势滑动监听器。 2、setProgressBackgroundColor(int colorRes):设置进度圈的背景色。 3、setColorSchemeResources(int… colorResIds):设置进度动画的颜色。 4、setRefreshing(Boolean refreshing):设置组件的刷洗状态。 5、setSize(int size):设置进度圈的大小,只有两个值:DEFAULT、LARGE 6. setProgressViewOffset() 设置swipRefreshLayout小圆圈的偏移量
0 0
- RecyclerView的使用及配合CardView使用
- Android RecyclerView与CardView的配合使用
- CardView,RecyclerView的使用
- RecyclerView与CardView的使用
- RecyclerView CardView的基本使用
- Android RecyclerView + CardView的使用
- RecyclerView和CardView的使用
- RecyclerView与CardView的使用
- RecyclerView与CardView的使用
- RecyclerView与CardView的使用
- android新特性:RecyclerView与CardView配合使用
- android新特性:RecyclerView与CardView配合使用
- Eclipse 使用RecyclerView及CardView注意事项:
- RecyclerView CardView使用解析
- RecyclerView结合CardView使用
- RecyclerView CardView使用解析
- CardView、RecyclerView简单使用
- Android RecyclerView和CardView的结合使用
- duilib基本流程
- 独家冠名《欢乐中国人》,长安汽车发力娱乐营销
- mysql5.7安装
- 关于自学语法部分的思考
- 关于Struts2.5的全局方法调用配置说明及相应的SMI的两种解决方案
- RecyclerView的使用及配合CardView使用
- oracle 函数
- 安卓一些容易被忽略的异常整理
- vb 用ADO控件链接ACCESS 方法
- Android 更新UI的两种方法——handler和runOnUiThread()
- linux 下如何回到根目录
- Java学习之数据类型
- Android 搜索框:SearchView 的属性和用法详解
- android studio使用随手记