文档章节

个人总结之RecyclerView

Magic_锋
 Magic_锋
发布于 2016/02/29 15:35
字数 478
阅读 163
收藏 2

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

    首先Activity的布局如下:

    

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

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

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

    

    当然这里的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);


© 著作权归作者所有

共有 人打赏支持
Magic_锋
粉丝 0
博文 51
码字总数 30535
作品 0
东城
程序员
《android recyclerview的简单使用》

首先是主要布局 <android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/swipeRefreshLayout"android:layoutwidth="m......

吕檀溪
2015/09/22
308
0
安卓ScrollView嵌套RecyclerView,GridView,ViewPager冲突解决

如题,就把项目中常见的这几个冲突总结下吧,记性不太好,还是写下来好了。 ScrollView嵌套RecyclerView 滑动不流畅冲突:在RecyclerView属性中加入 使recyclerview的滑动跟随scrollveiw sc...

深情不及酒伴
2017/09/04
0
0
Android studio 导入依赖库

用android studio new 一个demo时用到RecyclerView,先在xml中引入support v7包的RecyclerView,发现没有找到对应的RecyclerView,然后研究了下需要导入recyclerview-v7包 android studio新建...

wongstar
2017/12/13
0
0
RecyclerView使用总结-------上

前言 学习使用RecyclerView也有一段时间,一直都没有时间做个总结,就抽空想把RecyclerView的一些使用方法总结出来,方便大家也方便自己查阅。 简介 RecyclerView是support.v7包中的控件,可...

CaostGrace
05/15
0
0
RecyclerView的两种加载更多的写法比较

关于RecyclerView的加载更多(重写RecyclerView.OnScrollListener),网上普遍有两种写法,来分析下两种写法的优劣: 第一种,代码如下,这种方法的原理是当RecyclerView持有的Item数量减去可见的I...

fantasiter
2016/06/30
32
0

没有更多内容

加载失败,请刷新页面

加载更多

Mac OS X下Maven的安装与配置

Mac OS X 安装Maven: 下载 Maven, 并解压到某个目录。例如/Users/robbie/apache-maven-3.3.3 打开Terminal,输入以下命令,设置Maven classpath $ vi ~/.bash_profile 添加下列两行代码,之后...

TonyStarkSir
今天
3
0
关于编程,你的练习是不是有效的?

最近由于工作及Solution项目的影响,我在重新学习DDD和领域建模的一些知识。然后,我突然就想到了这个问题,以及我是怎么做的? 对于我来说,提升技能的项目会有四种: 纯兴趣驱动的项目。即...

问题终结者
今天
4
0
打开eclipse出现an error has occurred see the log file

解决方法: 1,打开eclipse安装目录下的eclipse.ini文件; 2,打开的文本文件最后添加一行 --add-modules=ALL-SYSTEM 3,保存重新打开Eclipse。...

任梁荣
昨天
4
0
搞定Northwind示例数据库,无论哪个版本的SQLServer都受用

Northwind数据库 从这里可以找到突破口: http://social.msdn.microsoft.com/Forums/zh-CN/Vsexpressvb/thread/8490a1c6-9018-40c9-aafb-df9f79d29cde 下面是MSDN: http://msdn2.microsoft......

QQZZFT
昨天
1
0
mysql主从同步,安装配置操作

准备 两台mysql服务,我这里准备了如下: 主库:192.168.176.128 从库:192.168.176.131 如何在Linux上安装mysql服务,请看https://blog.csdn.net/qq_18860653/article/details/80250499 操作...

小致dad
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部