android RecyclerView 基础知识总结

目录

一 . 介绍及基本用法

二. 点击事件及分割线

三 . 增加及删减item

一 . 介绍及基本用法

  RecyclerView 是一个强大的滚动控件,应用场景广泛。像消息列表,微博信息等场景大多使用RecyclerView。它具有高度的

解耦,异常的灵活性和更高的效率,逐渐替换掉ListView和GridView。

  基本用法: 

  使用前先在 app/build.gradle 文件 dependencies闭包中添加依赖(版本可能不同):

implementation 'com.android.support:recyclerview-v7:26.1.0'

 在布局文件中添加 RecyclerView 控件,以及自定义item的布局文件(这里我们在其中放置一个TextView)后,需要为我们的  RecyclerView自定义一个适配器。

如图,适配器继承 RecyclerView.Adapter<>,并将泛型指定为 适配器的内部类ViewHolder(继承RecyclerView.ViewHolder)。

接着根据我们自定义的item重写图中3个方法及内部类。

· RecyclerView.ViewHolder : 生成子项item布局,通过findViewById()可获取布局中控件实例。

· onCreateViewHolder : 用于创建 ViewHolder 实例(其中R.layout.item为自定义item布局)

·onBindViewHolder : 将视图与数据进行绑定。数据从适配器构造函数传入。

其中泛型item为数据的实体类,根据不同数据创建。

· getItemCount : 用于告诉RecyclerView一共有多少子项。直接返回数据源长度。

然后在活动中创建RecyclerView实例并设置布局方式,创建适配器并传入RecyclerView中。

 List<item> items=new ArrayList<>();

其中LinearLayoutManager表示item是线性排列的,默认是垂直排列,如果想设置成水平排列,可添加以下代码:

layoutManger.setOriention(LinearLayoutManger.HORIZONTAL);

也可以设置其他布局方式: GirdLayoutManager可以实现网格布局(第二个参数为列数)

GridLayoutManager layoutManager=new GridLayoutManager(this,3);

 StaggeredGirdLayoutManager可以实现瀑布流

StaggeredGirdLayoutManager layoutManager=newStaggeredGirdLayoutManager(3,StaggeredGirdLayoutManager.VERTICAL);

第一个参数指定布局的列数,第二个参数指定排列方向。

二. 点击事件及分割线

1. 点击事件

RecyclerView中item的点击事件需要我们定义。常用方法是在适配器中定义接口提供回调。

首先先实现点击接口:

implements View.OnLongClickListener, View.OnClickListener

在适配器中定义接口,提供回调:

对item设置监听并回调给我们自定义的监听。先在onCreateViewHolder中添加如下代码:

view.setOnLongClickListener(this); view.setOnClickListener(this);

在onBindViewHolder添加如下代码 :

 holder.itemView.setTag(position);

重写onClick(),onLongClick()方法:

最后在活动中监听:

2.分割线

分割线也需要我们自定义,并通过 RecyclerView.addItemDecoration()加入分割线。

首先继承 RecyclerView.ItemDecoration,然后重写方法。

public void onDraw(Canvas c, RecyclerView parent, State state)
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, State state)

主要有以上方法。onDraw()方法是绘制分割线的,getItemOffsets()用于设置item的padding属性。

推荐阅读:RecyclerView之ItemDecoration由浅入深

三 . 增加及删减item

在适配器中添加如下代码:

其中notifyItemInserted()及notifyItemRemoved()会提醒RecyclerView刷新页面。

猜你喜欢

转载自blog.csdn.net/Yang_RT/article/details/81007722