android封装设置item,GitHub - itrenjunhua/RRecyclerView: RecyclerView 常用示例,以及 Adapter 和 ItemDecoration 封装...

Android RecyclerView 控件使用

Android RecyclerView 控件使用方法及代码示例,以及 RecyclerView 分割线绘制类和 Adapter 的封装。

主要包含的代码

1.使用不同的RecyclerView.LayoutManger实现不同风格的布局(ListView类型、GridView类型、瀑布流类型)

2.给RecyclerView添加分割线

3.给 item 添加点击事件和长按事件

4.使用 GridLayoutManager 指定item占用列数、使用多种 item 类型

5.与 SwipeRefreshLayout 控件结合实现刷新和自动加载更多

6.使用 ItemTouchHelper 实现拖拽和侧滑删除效果

7.将Adapter进行封装

dba2d2e7ee97404bc5b636c2740ef110.png

RecyclerView 绘制类

1.解决了 GridLayoutManager 类型时添加分割线后 item 大小不一致的问题

2.支持自定义设置水平分割线高度、颜色(或Drawable),垂直分割线高度、颜色(或Drawable);以及水平分割线和垂直分割线交叉点的颜色(或Drawable)

3.支持自定义是否需要绘制第一行之前、第一列之前、最后一行之后、最后一列之后的分割线,并指定其宽度和颜色(或Drawable)

RecyclerView Adapter封装

封装说明:

定义一个 RecyclerAdapter extends RecyclerView.Adapter 插件类,

自定义一个 RecyclerViewHolder extends RecyclerView.ViewHolder 类,

然后为每一种类型的 item 创建一个 cell(继承至 BaseRecyclerCell) ,最后重写 RecyclerAdapter 类中的抽象方法 getRecyclerCell(int itemTypeValue) 返回 BaseRecyclerCell 子类实例(也就是当前列表类型的cell,多种条目类型实现时请看下文)。

当一个列表中有多种条目类型时,需要使用 MultiItemAdapter 适配器类,添加到该类中的数据,必须实现 MultiItemEntity 接口,返回当前数据类型对应的 itemType 值(条目类型值,用于区分不同的条目类型),在重写方法 getRecyclerCell(int itemTypeValue) 时,可以根据参数 itemTypeValue 返回对应的 BaseRecyclerCell 子类实例

好处:

同一种条目布局的 RecyclerView 都可以使用同一个 RecyclerAdapter 类,并且Adapter实现非常简单,只需要实现一个方法返回对应的 BaseRecyclerCell 对象;

如果一个列表有多重类型的 item 样式,只需要创建一个 cell 类,在 MultiItemAdapter 类中 getRecyclerCell(int itemTypeValue) 方法返回即可,不需要修改其他中的代码;

当应用中有相同的 item 类型时,可以实现代码的复用(因为每一个 item(或者一种类型的数据) 就是一个独立的 cell,与具体的页面无关)

自定义下拉刷新和加载更多效果

该部分实现仅仅说明实现原理,功能比较单一。在编写App时建议使用完整下拉刷新和上拉加载框架。如 SmartRefreshLayout 等。

扩展RecyclerView控件,实现自定义下拉刷新和加载更多效果,控件名:RefreshRecyclerView

在布局文件中定义

android:id="@+id/recyclerview"

android:layout_width="match_parent"

android:layout_height="match_parent"/>

在代码中找到控件,然后设置监听

RefreshRecyclerView recyclerview = (RefreshRecyclerView) findViewById(R.id.recyclerview);

// 刷新监听

recyclerview.setOnRefreshListener(new RefreshRecyclerView.OnRefreshListener() {

@Override

public void onRefresh() {

}

});

// 加载更多监听

recyclerview.setOnLoadMoreListener(new RefreshRecyclerView.OnLoadMoreListener() {

@Override

public void onLoadMore() {

}

});

设置能否刷新或者加载更多

recyclerview.setCanLoadMore(false); // 设置能否加载更多

recyclerview.setCanRefresh(false); // 设置能否刷新

设置是否还有更多

recyclerview.setHasMore(true);

博客说明地址:

效果图

9b23e3a7c73c3fe5088c00e588afb7f6.png

76cb3c991905abcf25db906f205e4387.png

cf518c876897357c00bdb707787f5710.png

image_grid2.jpg

dbccf071b02d15766eacc67e7780a90e.png

8f4e526ec4227a0e969f85cb0ddadf0d.png

143062d8d9f18d19ea0cd4a29ccd5bc9.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值