文档章节

个人总结之RecyclerView

Magic_锋
 Magic_锋
发布于 2016/02/29 15:35
字数 478
阅读 166
收藏 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
博文 52
码字总数 31934
作品 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

没有更多内容

加载失败,请刷新页面

加载更多

mysql 时间格式化

DATE_FORMAT

1713716445
3分钟前
0
0
聊聊flink的PartitionableListState

序 本文主要研究一下flink的PartitionableListState PartitionableListState flink-runtime_2.11-1.7.0-sources.jar!/org/apache/flink/runtime/state/DefaultOperatorStateBackend.java /*......

go4it
8分钟前
0
0
Micropython教程之TPYBoard开发板制作电子时钟(萝卜学科编程教育)

1.实验目的 1. 学习在PC机系统中扩展简单I/O?接口的方法。 2. 什么是SPI接口。 3. 学习TPYBoard I2C接口的用法。 4. 学习LCD5110接线方法。 5. 设定时钟并将当前时间显示在LCD5110上。 2.所需...

bodasisiter
8分钟前
0
0
js 闭包

闭包,是 Javascript 比较重要的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是 ECMAScript 规范给的定义,如果没有实战经验,很难从定义去理解它。因此,本文不会对闭包的概念...

MrBoyce
13分钟前
0
0
Java B2B2C o2o多用户商城 springcloud架-企业云架构common-service代码结构分析

当前的分布式微服务云架构平台使用Maven构建,所以common-service的通用服务按照maven构建独立的系统服务,结构如下: particle-commonservice: spring cloud 系统服务根项目,所有服务项目...

itcloud
18分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部