个人总结之RecyclerView
2016-02-29 00:00
375 查看
RecycleView是V7包下的,可以说是ListView的升级版,因为ListView是不支持横向滑动,而RecycleView既支持横向也支持纵向滑动,使用很方便,但是有一点坑爹的就是没有条目的点击事件,需要我们自己来写
首先Activity的布局如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202001/27/04f80421440c63e448ff31fdc99855ce.png)
Item的布局我只是用一个简单的TextView来写的,所以就不传图了;
然后在Activity中的onCreat方法中,获取到RecyclerView控件,然后设定Layout管理器
RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.rec);
![](https://oscdn.geek-share.com/Uploads/Images/Content/202001/27/5a6819c9e584487f93e221d6ce2d5ca7.png)
当然这里的setOrientation也可以设置为horizontal的,这样就是横向的
MyAdaper就是适配器,他要继承的是RecyclerView.Adaper,主要重写里面的onCreatViewHolder(),onBindViewHolder(),getItemCount()这三个方法,
onCreatViewHolder()就是创建ViewHolder
onBindViewHolder()就是绑定ViewHolder,和数据绑定
getItemCount()就是获取总的条目数
这样就可以了,但是有一点就是item没有条目点击事件,如果想要用的话,我们只能自己来写个接口了,因为我的适配器是写在Activity中的,也就是和OnCreat()在一个类中,所以如下:
首先在全局中写个接口
然后在适配器MyAdapter中
然后在onBindViewHolder()方法
这就可以了,用的话在new 出适配器的时候设置点击事件
首先Activity的布局如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202001/27/04f80421440c63e448ff31fdc99855ce.png)
Item的布局我只是用一个简单的TextView来写的,所以就不传图了;
然后在Activity中的onCreat方法中,获取到RecyclerView控件,然后设定Layout管理器
RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.rec);
![](https://oscdn.geek-share.com/Uploads/Images/Content/202001/27/5a6819c9e584487f93e221d6ce2d5ca7.png)
当然这里的setOrientation也可以设置为horizontal的,这样就是横向的
MyAdaper就是适配器,他要继承的是RecyclerView.Adaper,主要重写里面的onCreatViewHolder(),onBindViewHolder(),getItemCount()这三个方法,
onCreatViewHolder()就是创建ViewHolder
onBindViewHolder()就是绑定ViewHolder,和数据绑定
getItemCount()就是获取总的条目数
private class MyAdapter extends RecyclerView.Adapter { @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(getBaseContext()).inflate(R.layout.item, null); Holder holder = new Holder(view); return holder; } @Override public void onBindViewHolder( RecyclerView.ViewHolder holder, final int position) { final Holder h = (Holder) holder; h.setData(position); } @Override public int getItemCount() { return list.size(); } } class Holder extends RecyclerView.ViewHolder { TextView mtv; public Holder(View view) { super(view); mtv = (TextView) view.findViewById(R.id.tv); } public void setData(int position) { mtv.setText(list.get(position).getName()); } }
这样就可以了,但是有一点就是item没有条目点击事件,如果想要用的话,我们只能自己来写个接口了,因为我的适配器是写在Activity中的,也就是和OnCreat()在一个类中,所以如下:
首先在全局中写个接口
public interface onItemClickListener{ void onItemClick(View vi,int position); }
然后在适配器MyAdapter中
private onItemClickListener mOnItem; public void onItemClickListener(onItemClickListener mOnItemClickListener){ this.mOnItem = mOnItemClickListener; }
然后在onBindViewHolder()方法
@Override public void onBindViewHolder( RecyclerView.ViewHolder holder, final int position) { final Holder h = (Holder) holder; h.setData(position); if(mOnItem != null){ h.mtv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mOnItem.onItemClick(h.mtv,position); } }); } }
这就可以了,用的话在new 出适配器的时候设置点击事件
MyAdapter myAdapter = new MyAdapter(); myAdapter.onItemClickListener(new onItemClickListener() { @Override public void onItemClick(View vi, int position) { Toast.makeText(Priactise.this, "这是" + position, Toast.LENGTH_SHORT).show(); } }); mRecycle.setAdapter(myAdapter);
相关文章推荐
- 算法---快速排序
- Java 正则表达式--匹配类型
- 关于ArcGIS 10.2的破解安装心得
- MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UP
- 本地消息传递EventBus
- Python+Flask微信企业号开发之发送消息
- nginx 限制某些类型的客户端的访问
- Tomcat session共享 —MSM
- linux用户登录失败,锁定用户
- android studio 代理设置
- ssh 免密码登陆
- 某中国500强企业BI系统成功应用案例
- java学习笔记:使用dom4j解析xml
- 跳转指令
- 网页分享插件
- 设计原则
- 厦门巨游网络科技有限公司(HOTPOWER)承接游戏UI外包
- 自适应网页设计的方法(手机端良好的访问体验)
- 拆解身份证的工具类
- 蜂窝教育iOS培训:认真对待每位学员