Android-自定义的一个RecycleView实现了ListViewGridView和瀑布流三种效果
![preview](https://csdnimg.cn/release/downloadcmsfe/public/img/white-bg.ca8570fa.png)
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
在Android应用开发中,RecyclerView是取代ListView和GridView的现代组件,它提供了更高的性能和更灵活的布局管理。本文将深入探讨如何通过自定义RecyclerView实现ListView、GridView和瀑布流(Waterfall Flow)三种不同的显示效果,并集成点击事件处理。 RecyclerView的核心在于其强大的Adapter和LayoutManager。Adapter负责填充数据,而LayoutManager则决定视图如何在屏幕上布局。对于ListView效果,我们可以使用 LinearLayoutManager,这是RecyclerView的默认布局管理器,它可以水平或垂直滚动,类似于ListView。设置LinearLayoutManager的方式如下: ```java RecyclerView recyclerView = findViewById(R.id.recycler_view); recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)); ``` 接下来,为了实现GridView的效果,我们需要使用GridLayoutManager。它允许我们将视图组织成网格。例如,创建一个2列的GridView: ```java recyclerView.setLayoutManager(new GridLayoutManager(this, 2)); ``` 瀑布流(Waterfall Flow)效果通常用于展示图片,如电商应用的商品列表。实现这一效果需要自定义LayoutManager或者使用第三方库如StaggeredGridLayoutManager。这里我们假设使用StaggeredGridLayoutManager: ```java recyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)); ``` 点击事件的处理可以通过设置OnClickListener或OnLongClickListener在ViewHolder内部完成。你需要在ViewHolder的构造函数中传递一个接口,然后在点击事件触发时调用该接口的方法: ```java public class MyViewHolder extends RecyclerView.ViewHolder { public MyViewHolder(View itemView, OnItemClickListener listener) { super(itemView); itemView.setOnClickListener(v -> listener.onItemClick(getAdapterPosition())); itemView.setOnLongClickListener(v -> { if (listener != null) { listener.onItemLongClick(getAdapterPosition()); return true; } return false; }); } } ``` 定义接口: ```java public interface OnItemClickListener { void onItemClick(int position); void onItemLongClick(int position); } ``` 在Activity或Fragment中实现这个接口并设置给ViewHolder: ```java MyAdapter adapter = new MyAdapter(dataList, new OnItemClickListener() { @Override public void onItemClick(int position) { // 处理点击事件 } @Override public void onItemLongClick(int position) { // 处理长按事件 } }); recyclerView.setAdapter(adapter); ``` 在项目`RecyclerviewTest-master`中,你可能会发现以下关键文件: 1. RecyclerView的布局XML文件,如`activity_main.xml`,包含RecyclerView的声明。 2. 自定义Adapter类,如`MyAdapter.java`,继承自`RecyclerView.Adapter`,并实现数据绑定和事件处理。 3. 自定义ViewHolder类,如`MyViewHolder.java`,持有视图并处理点击事件。 4. 示例数据类,如`ItemModel.java`,存储要显示的数据。 5. 主Activity,如`MainActivity.java`,设置RecyclerView的LayoutManager和Adapter。 通过自定义RecyclerView的LayoutManager和Adapter,我们可以实现多种布局效果,同时通过在ViewHolder中处理点击事件,为用户提供丰富的交互体验。在实际项目中,可以根据需求进一步优化性能,比如使用DiffUtil来减少不必要的数据刷新,或使用PagedListAdapter实现分页加载。在`RecyclerviewTest-master`项目中,你可以找到具体的实现代码,通过学习和理解这些代码,将有助于你更好地掌握RecyclerView的使用。
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![thumb](https://img-home.csdnimg.cn/images/20250102104920.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![package](https://csdnimg.cn/release/downloadcmsfe/public/img/package.f3fc750b.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
- 1
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 495
- 资源: 1万+
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- 【独家首发】鹈鹕算法POA-DELM锂电池寿命SOC估计【含Matlab源码 7009期】.zip
- 【创新发文】人工蜂群算法ABC-DELM预测(多输入单输出)【含Matlab源码 6945期】.zip
- 【创新发文】人工蜂群算法ABC-DELM预测(多输入单输出)【含Matlab源码 6945期】.zip
- 【创新发文】三角测量拓扑聚合器TTAO-DELM预测(多输入单输出)【含Matlab源码 6946期】.zip
- 【创新发文】三角测量拓扑聚合器TTAO-DELM预测(多输入单输出)【含Matlab源码 6946期】.zip
- 【创新发文】蛇群算法SO-DELM预测(多输入单输出)【含Matlab源码 6948期】.zip
- 【创新发文】蛇群算法SO-DELM预测(多输入单输出)【含Matlab源码 6948期】.zip
- 【创新发文】沙猫群算法SCSO-DELM预测(多输入单输出)【含Matlab源码 6947期】.zip
- 【创新发文】沙猫群算法SCSO-DELM预测(多输入单输出)【含Matlab源码 6947期】.zip
- 【创新发文】淘金算法GRO-DELM预测(多输入单输出)【含Matlab源码 6950期】.zip
- 【创新发文】淘金算法GRO-DELM预测(多输入单输出)【含Matlab源码 6950期】.zip
- 【创新发文】鹈鹕算法POA-DELM预测(多输入单输出)【含Matlab源码 6951期】.zip
- 【创新发文】鹈鹕算法POA-DELM预测(多输入单输出)【含Matlab源码 6951期】.zip
- 【创新发文】狮群算法LSO-DELM预测(多输入单输出)【含Matlab源码 6949期】.zip
- 【创新发文】狮群算法LSO-DELM预测(多输入单输出)【含Matlab源码 6949期】.zip
- 【创新发文】秃鹰算法BES-DELM预测(多输入单输出)【含Matlab源码 6953期】.zip
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)