博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
个人总结之RecyclerView
阅读量:7218 次
发布时间:2019-06-29

本文共 2455 字,大约阅读时间需要 8 分钟。

hot3.png

     RecycleView是V7包下的,可以说是ListView的升级版,因为ListView是不支持横向滑动,而RecycleView既支持横向也支持纵向滑动,使用很方便,但是有一点坑爹的就是没有条目的点击事件,需要我们自己来写

    首先Activity的布局如下:

    141705_cQWV_2633885.png

    Item的布局我只是用一个简单的TextView来写的,所以就不传图了;

    然后在Activity中的onCreat方法中,获取到RecyclerView控件,然后设定Layout管理器

    RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.rec);

    143111_z54l_2633885.png

    当然这里的setOrientation也可以设置为horizontal的,这样就是横向的

    MyAdaper就是适配器,他要继承的是RecyclerView.Adaper,主要重写里面的onCreatViewHolder(),onBindViewHolder(),getItemCount()这三个方法,

    onCreatViewHolder()就是创建ViewHolder

    onBindViewHolder()就是绑定ViewHolder,和数据绑定

    getItemCount()就是获取总的条目数

private class MyAdapter extends RecyclerView.Adapter {    @Overridepublic RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {    View view = LayoutInflater.from(getBaseContext()).inflate(R.layout.item, null);    Holder holder = new Holder(view);    return holder;}    @Overridepublic void onBindViewHolder( RecyclerView.ViewHolder holder, final int position) {    final Holder h = (Holder) holder;     h.setData(position);}   @Overridepublic 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()方法

@Overridepublic 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);

转载于:https://my.oschina.net/fbf8866/blog/625902

你可能感兴趣的文章
[转载] 信息系统项目管理师视频教程——18 项目沟通管理
查看>>
在Windows下建立QT开发环境
查看>>
Jedis、JedisPool、ShardedJedis和ShardedJedisPool,java对redis的基本操作
查看>>
[转载] 致命伴侣
查看>>
HTML5 localStorage本地存储实际应用举例
查看>>
Scala访问修饰符
查看>>
实习感悟
查看>>
产品经理网站小结
查看>>
Bootstrap 附加导航插件
查看>>
如何设置启动SMTP、POP3以及IMAP4的SSL服务端口?
查看>>
自制函数strcpy
查看>>
gSoap开发(三)——WSDL简介
查看>>
软件RAID5项目实战!!!
查看>>
Java基础学习总结(21)——数组
查看>>
js格式化日期
查看>>
定时与延时任务
查看>>
Squid 日志分析 和反向代理
查看>>
Hadoop的安装及一些基本概念解释
查看>>
大容量分区命令parted
查看>>
从输入 URL 到页面加载完成的过程中都发生了什么事情?
查看>>