RecyclerView的简单使用

原创 2015年11月19日 16:26:59

RecyclerView 是Android L版本中新添加的一个用来取代ListView的SDK,它的灵活性与可替代性比listview更好。接下来通过一系列的文章讲解如何使用RecyclerView,彻底抛弃ListView.
介绍:
RecyclerView与ListView原理是类似的:都是仅仅维护少量的View并且可以展示大量的数据集。RecyclerView用以下两种方式简化了数据的展示和处理:
使用LayoutManager来确定每一个item的排列方式。
为增加和删除项目提供默认的动画效果。
你也可以定义你自己的LayoutManager和添加删除动画,RecyclerView项目结构如下:
Adapter:使用RecyclerView之前,你需要一个继承自RecyclerView.Adapter的适配器,作用是将数据与每一个item的界面进行绑定。
LayoutManager:用来确定每一个item如何进行排列摆放,何时展示和隐藏。回收或重用一个View的时候,LayoutManager会向适配器请求新的数据来替换旧的数据,这种机制避免了创建过多的View和频繁的调用findViewById方法(与ListView原理类似)。

目前SDK中提供了三种自带的LayoutManager:
LinearLayoutManager
GridLayoutManager
StaggeredGridLayoutManager
简单来说,RecyclerView 作为一个新的sdk,它的可重构性要比ListView好的多,在以后的开发中可以大量使用。
下面简单说一下使用,
布局文件,简单几句:

<android.support.v7.widget.RecyclerView
        android:id="@+id/my_recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="vertical" />

在布局文件中添加该控件之后,在代码中绑定:

mRecyclerView = (RecyclerView)findViewById(R.id.my_recycler_view);
//创建默认的线性LayoutManager
mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);
//如果可以确定每个item的高度是固定的,设置这个选项可以提高性能
mRecyclerView.setHasFixedSize(true);
//创建并设置Adapter
mAdapter = new MyAdapter(getDummyDatas());
mRecyclerView.setAdapter(mAdapter);

之后便可以定义MyAdapter,从网上看到许多处理adapter的方法,挑一个比较好理解的来说吧:
MyAdapter继承RecyclerView.Adapter

@Override
public MyViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View view = minflater.inflate(R.layout.item_single_textview, viewGroup, false);
    MyViewHolder viewHolder = new MyViewHolder(view);
    return viewHolder;
    }

将数据与View绑定,并且可以处理一些动作(这里处理一个点击事件)

@Override
public void onBindViewHolder(MyViewHolder myViewHolder, final int i) {
    myViewHolder.tv.setText(mDatas.get(i));
    setItemEventClick(myViewHolder);
    }

定义setItemEventClick()方法

protected void setItemEventClick(final MyViewHolder myViewHolder) {
    if (mOnItemClickListener != null) {
    myViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
                public void onClick(View view) {
                    int layoutPostion = myViewHolder.getLayoutPosition();
                    mOnItemClickListener.onItemClick(view, layoutPostion);
                }
            });

                    myViewHolder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View view) {
                    int layoutPostion = myViewHolder.getLayoutPosition();
    mOnItemClickListener.onItemLongClick(view, layoutPostion);
                    return false;
                }
            });
        }
    }

自定义的ViewHolder,持有每个Item的的所有界面元素

class MyViewHolder extends RecyclerView.ViewHolder {
        TextView tv;

        public MyViewHolder(View itemView) {
            super(itemView);
            tv = (TextView) itemView.findViewById(R.id.id_tv);
        }
    }

写出点击事件的接口,由主页面来处理点击事件

private OnItemClickListener mOnItemClickListener;
public interface OnItemClickListener {
        void onItemClick(View view, int postion);

        void onItemLongClick(View view, int postion);
    }

public void setmOnItemClickListener(OnItemClickListener mOnItemClickListener) {
        this.mOnItemClickListener = mOnItemClickListener;
    }

以上就是RecyclerView的简单使用,并不是很复杂,在今后的项目中可以尽量多使用该SDK,减少对ListView的使用,可以灵活的控制界面,稍后上传一个对RecyclerView的小Demo加深理解

Android新特性之RecyclerView的简单使用

Android新特性之RecyclerView的简单使用RecyclerView是安卓5.0版本中的一个新控件,目的是来取代使用多年的ListView。RecyclerView的灵活性远超ListVi...
  • Mr_dsw
  • Mr_dsw
  • 2015年09月29日 17:51
  • 5828

Android开发之RecyclerView的使用全解

人最先衰老的不是容貌,而是那份不顾一切的闯劲。
  • dmk877
  • dmk877
  • 2016年03月07日 14:21
  • 12431

RecyclerView的使用——简单例子

RecyclerView组件是一个更先进和灵活的版本的列表视图。这个小部件是一个非常有效率的容器,通过有限的views,可以滚动显示大型数据集。我们知道,Listview中的Adapter中可以实现V...
  • u013091087
  • u013091087
  • 2016年05月06日 15:48
  • 4061

简单使用RecyclerView

uses-permission android:name="android.permission.INTERNET"/>1 导入所用的依赖 compile 'com.squareup....
  • zhang1223665986
  • zhang1223665986
  • 2018年01月17日 20:54
  • 7

recyclerview简单使用

(1)将recyclerview导入到项目中 android studio: 在dependencies{中添加 compile 'com.android.support:appcompat-v7:2...
  • fugang1230
  • fugang1230
  • 2017年11月22日 14:26
  • 89

RecyclerView 简单使用

控制其显示的方式,通过布局管理器LayoutManager 控制Item间的间隔(可绘制),通过ItemDecoration 控制Item增删的动画,通过ItemAnimator 控制点击、长按事件,...
  • wangdong_0428
  • wangdong_0428
  • 2016年08月12日 10:59
  • 75

RecyclerView简单使用

上面的截图分别是仿List显示、网格显示、瀑布流显示。 LinearLayoutManager:线性布局,横向或者纵向滑动列表 GridLayoutManager:表格布局 StaggeredG...
  • zhangli_
  • zhangli_
  • 2016年03月18日 21:39
  • 2175

RecyclerView添加Header和Footer的基本原理

RecyclerView添加Header和Footer的基本原理转载注明出处csdn chendong_ 更详细的封装及代码说明采用的基本原理就是Header和Footer作为RecyclerVie...
  • chendong_
  • chendong_
  • 2016年04月12日 00:05
  • 2030

PopupWindow的简单使用(结合RecyclerView)

Android弹窗: 在Android中弹出式菜单(以下称弹窗)是使用十分广泛一种菜单呈现的方式,弹窗为用户交互提供了便利。关于弹窗的实现大致有以下两种方式AlertDialog和PopupWindo...
  • shu_lance
  • shu_lance
  • 2017年07月28日 16:04
  • 1083

RecyclerView的简单使用(一)

1.添加所需依赖库compile 'com.android.support:recyclerview-v7:25.3.0'2.代码xml布局
  • u010498248
  • u010498248
  • 2017年09月05日 15:38
  • 133
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:RecyclerView的简单使用
举报原因:
原因补充:

(最多只允许输入30个字)