千家信息网

如何使用RecyclerView仿应用列表实现网格布局

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章给大家分享的是有关如何使用RecyclerView仿应用列表实现网格布局的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。详细代码XML布局文件在布局中使用Recycl
千家信息网最后更新 2026年11月02日如何使用RecyclerView仿应用列表实现网格布局

这篇文章给大家分享的是有关如何使用RecyclerView仿应用列表实现网格布局的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

详细代码

XML布局文件

在布局中使用RecyclerView控件

activity_main.xml

RecyclerView子项列表布局

recyclerview_item.xml

JAVA代码

MainActivity

package com.matt.recyclerview; import androidx.appcompat.app.AppCompatActivity;import androidx.recyclerview.widget.GridLayoutManager;import androidx.recyclerview.widget.RecyclerView; import android.os.Bundle; import java.util.ArrayList;import java.util.List; public class MainActivity extends AppCompatActivity { private RecyclerView mRecyclerView; private GridAdapter mGridAdapter; private List mApplyList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mRecyclerView = findViewById(R.id.recyclerview); mApplyList = new ArrayList<>(); mApplyList.add(new ApplyBean("SETTINGS","设置", R.mipmap.ic_launcher)); mApplyList.add(new ApplyBean("CALCULATOR","计算器", R.mipmap.ic_launcher)); mApplyList.add(new ApplyBean("WEATHER","天气", R.mipmap.ic_launcher)); mApplyList.add(new ApplyBean("CALENDAR","日历", R.mipmap.ic_launcher)); mApplyList.add(new ApplyBean("PHOTO" ,"相册", R.mipmap.ic_launcher)); mApplyList.add(new ApplyBean("TIME" ,"时钟", R.mipmap.ic_launcher)); mApplyList.add(new ApplyBean("FM" ,"收音机", R.mipmap.ic_launcher)); mApplyList.add(new ApplyBean("CAMERA" ,"相机", R.mipmap.ic_launcher)); mApplyList.add(new ApplyBean("PLAY","播放器", R.mipmap.ic_launcher)); mGridAdapter = new GridAdapter(mApplyList); //这里的第二个参数4代表的是网格的列数 mRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); mRecyclerView.setAdapter(mGridAdapter); }}

RecyclerView适配器GridAdapter

package com.fenda.homepage.Adapter; import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView; import com.fenda.homepage.R;import com.fenda.homepage.bean.ApplyBean; import java.util.List; /** * @author:Matt.Liao * 日期时间: 2019/9/1 17:45 * 内容描述: * 版本: * 包名: */public class GridAdapter extends RecyclerView.Adapter{ private List mList; private RecyclerView recyclerView; public GridAdapter(List list){ this.mList = list; } @Override public Holder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.submenu_item_recyclerview, null); final Holder holder = new Holder(view); //对加载的子项注册监听事件 holder.fruitView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int position = holder.getAdapterPosition(); String applyId = mList.get(position).getApplyId(); onItemClickListener.onItemClick(view ,applyId); } }); return holder; } @Override public void onBindViewHolder(Holder holder, int position) { holder.mApplyNameTv.setText(mList.get(position).getApplyName()); holder.mApplyImageIv.setImageResource(mList.get(position).getApplyImage()); } @Override public int getItemCount() { return mList == null ? 0 : mList.size(); } private OnItemClickListener onItemClickListener; public void setOnItemClickListener(OnItemClickListener onItemClickListener){ this.onItemClickListener = onItemClickListener; } /** * 定义RecyclerView选项单击事件的回调接口 */ public interface OnItemClickListener{ /** * @param view 当前单击的View * @param applyId 单击的View的应用id */ void onItemClick(View view, String applyId); } class Holder extends RecyclerView.ViewHolder { private TextView mApplyNameTv; private ImageView mApplyImageIv; private View fruitView; //表示我们自定义的控件的视图 public Holder(View itemView) { super(itemView); fruitView = itemView; mApplyNameTv = itemView.findViewById(R.id.tv_apply_name); mApplyImageIv = itemView.findViewById(R.id.iv_apply_image); } }}

应用列表实体类ApplyBean

package com.matt.recyclerview; import android.os.Parcel;import android.os.Parcelable; /** * @author matt.liaojianpeng * 日期时间: 2019/9/1 16:31 * 内容描述: * 版本: * 包名: */public class ApplyBean{ private String applyId; private String applyName; private int applyImage; public String getApplyId() { return applyId; } public void setApplyId(String applyId) { this.applyId = applyId; } public ApplyBean(String applyName, int applyImage){ this.applyName = applyName; this.applyImage = applyImage; } public ApplyBean(String applyId , String applyName, int applyImage){ this.applyId = applyId; this.applyName = applyName; this.applyImage = applyImage; } public ApplyBean() { } public String getApplyName() { return applyName; } public void setApplyName(String applyName) { this.applyName = applyName; } public int getApplyImage() { return applyImage; } public void setApplyImage(int applyImage) { this.applyImage = applyImage; } public ApplyBean(Parcel source) { applyId = source.readString(); applyName = source.readString(); applyImage = source.readInt(); }}

详细讲解

设置RecyclerView适配器

//这里的第二个参数3代表的是网格的列数mRecyclerView.setLayoutManager(new GridLayoutManager(this, 3));mRecyclerView.setAdapter(mGridAdapter);

可以设置的一些参数,说明如下:

setLayoutManager设置RecyclerView布局样式

GridLayoutManager:网格布局

LinearLayoutManager:线性布局

适配器GridAdapter继承RecyclerView.Adapter

初始化

重写构造方法,传入子项数据列表

private List mList; private RecyclerView recyclerView; public GridAdapter(List list){ this.mList = list; }

内部类Holder用于绑定数据类型

class Holder extends RecyclerView.ViewHolder { private TextView mApplyNameTv; private ImageView mApplyImageIv; private View fruitView; //表示我们自定义的控件的视图 public Holder(View itemView) { super(itemView); fruitView = itemView; mApplyNameTv = itemView.findViewById(R.id.tv_apply_name); mApplyImageIv = itemView.findViewById(R.id.iv_apply_image); } }

onCreateViewHolder()方法,负责承载每个子项的布局。

onBindViewHolder()方法,负责将每个子项holder绑定数据。

getItemCount()方法,返回子项列表数目。

setOnItemClickListener()方法,设置子项列表监听。

OnItemClickListener()接口,定义RecyclerView选项单击事件的回调接口。

子项监听实现的方法,如下

mGridAdapter.setOnItemClickListener(new GridAdapter.OnItemClickListener() { @Override public void onItemClick(View view, String applyId) { if(applyId.equals("SETTINGS")){ Toast.makeText(getApplicationContext(),"设置",Toast.LENGTH_SHORT).show(); } else if (applyId.equals("CALCULATOR")){ Toast.makeText(getApplicationContext(),"计算器",Toast.LENGTH_SHORT).show(); } } });

感谢各位的阅读!关于"如何使用RecyclerView仿应用列表实现网格布局"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

布局 子项 方法 网格 应用 内容 事件 参数 接口 控件 数据 适配器 监听 适配 代码 代表 日期 时间 更多 版本 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 盈实互联网科技 互联网 科技创新 远拓互联网科技 南京欣网互联网科技 山东吉时兔互联网科技有限公司 团飞科技与伯堂互联网服务平台 福建科技产业互联网发展 互联网科技公司实习生 中国航天科技大学国际工业互联网 新兴科技互联网创新大赛颁奖典礼 互联网科技的全部知识 特约风豹互联网科技为什么扣费 为客找房互联网科技公司怎么样 启辰互联网科技 上海创道互联网络科技有限公司 图游互联网科技 山东大美朱楼互联网科技有限公司 西安有哪些互联网高科技企业 互联网金融运营模式中的金融科技 亚光科技低轨卫星互联网 河南真二互联网科技有限公司 智能科技公司是互联网公司吗 互联网巨头科技公司 左右互联网络科技 北京华百购互联网科技有限公司 互联网企业科技类企业如何做账 厦门江牛科技互联网 容联科技互联网电商 广州智享互联网科技 众联互联网络科技
0