RecyclerView的使用
来源:互联网 发布:mac个人文件存放在哪里 编辑:程序博客网 时间:2024/05/16 13:50
RecyclerView 是在Android5.0之后推出的,是一个比ListView更加灵活更加高效的适配器类型控件。但是RecyclerView不同于其他类型的适配器,它还需要一个LayoutManager进行页面控制展示。
RecyclerView提供了三种布局管理器:
1、LinearLayoutManager:线性布局管理器,支持水平和垂直效果。
2、GridLayoutManager:网格布局管理器,支持水平和垂直效果。
3、StaggeredGridLayoutManager:分布型管理器,瀑布流效果
RecyclerView的使用:
1、引入RecyclerView依赖包,V7下的,兼容到API17.
2、在xml布局中声明,在Java代码中初始化。
3、设置布局管理器
4、创建适配器,设置数据源,绑定适配器
具体创建适配器:①创建一个类,继承RecyclerView.Adapter<ViewHolder>.
②创建一个类ViewHolder,继承RecyclerView。VIewHolder,该类需要创建一个匹配父类的构造。
③重写适配器中的方法:getItemCount():获取数据源的个数(item的数量);onCreateViewHolder():该方法中导入布局,实例化VIewHolder;onBindViewHolder():绑定VIewHolder,加载数据。
具体代码:
适配器Adapter中:
public class MyRecyclerviewAdapter extends RecyclerView.Adapter<MyViewHolder> { private Context context; private List<Bean.DataBean.ForumListBean.GroupBean> list; public MyRecyclerviewAdapter(Context context, List<Bean.DataBean.ForumListBean.GroupBean> list) { this.context = context; this.list = list; } @Override public int getItemViewType(int position) { return super.getItemViewType(position); } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { MyViewHolder holder=new MyViewHolder(LayoutInflater.from(context).inflate(R.layout.recycler_item,parent)); return holder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.tv.setText(list.get(position).getName()); } @Override public int getItemCount() { return list.size(); }}class MyViewHolder extends RecyclerView.ViewHolder{ TextView tv; ImageView iv; public MyViewHolder(View itemView) { super(itemView); iv= (ImageView) itemView.findViewById(R.id.iv_image); tv=(TextView) itemView.findViewById(R.id.tv_name); }}
activity代码:
mrecycler = (RecyclerView) findViewById(R.id.recycler);//设置布局管理器//listviewmrecycler.setLayoutManager(new LinearLayoutManager(this));//gridview// mrecycler.setLayoutManager(new GridLayoutManager(this,4));//瀑布流// mrecycler.setLayoutManager(new StaggeredGridLayoutManager(4,StaggeredGridLayoutManager.VERTICAL));//设置adapteradapter = new MyRecyclerAdapter(this, list);mrecycler.setAdapter(adapter);
由于RecyclerView 为开发者提供了强大的复用机制,但是所有的点击事件都丢了,没有提供默认的点击事件,所以需要我们自己为RecyclerView手动实现点击。
首先创建一个类,实现RecyclerView的OnItemTouchListener,重写方法:
package com.bwei.test.lianxi.util;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.GestureDetector;import android.view.MotionEvent;import android.view.View;/** * Created by zhangjie on 2016/11/11. */public class RecyclerItem implements RecyclerView.OnItemTouchListener{ private OnItemClickListener mListener; public interface OnItemClickListener { public void onItemClick(View view, int position); } GestureDetector mGestureDetector; public RecyclerItem(Context context, OnItemClickListener listener) { mListener = listener; mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() { @Override public boolean onSingleTapUp(MotionEvent e) { return true; } }); } @Override public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) { View childView = view.findChildViewUnder(e.getX(), e.getY()); if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) { mListener.onItemClick(childView, view.getChildPosition(childView)); return true; } return false; } @Override public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) { }}
0 0
- RecyclerView+RecyclerView.Adapter+RecyclerView.ViewHolder的使用
- RecyclerView的使用
- RecyclerView的使用
- RecyclerView 的使用详解
- RecyclerView的基本使用
- RecyclerView的使用
- Android -- RecyclerView的使用
- RecyclerView的使用
- CardView,RecyclerView的使用
- 关于RecyclerView的使用
- RecyclerView的使用
- RecyclerView的使用(一)
- PopupWindow + RecyclerView的使用
- RecyclerView的简单使用
- RecyclerView 的简单使用
- recyclerview的使用
- RecyclerView的使用记录
- Android RecyclerView的使用
- 求一个矩阵的最大子矩阵
- MATLAB语句结束中逗号与分号的区别
- 【回归分析】[9]--加权最小二乘法
- Flume笔记二之source,channel,sink
- 数据结构-广义表
- RecyclerView的使用
- 初学者写java代码要注意代码规范:
- leetcode-20. Valid Parentheses
- 在Eclipse中使用JUnit4进行单元测试(高级篇)
- OpenGL ES着色语言-光照效果之散射光
- ExtJS5 Grid组件扩展
- jQuery父类子类选择器汇总
- 钉钉免登陆前端操作详解
- 一个app出现两个图标