移动技术开发:RecyclerView瀑布流水果列表

1 实验名称

       RecyclerView瀑布流水果列表

2 实验目的

       掌握RecyclerView控件的实现方法和基本应用

3 实验源代码

布局文件代码:

activity_main:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/recycler_view"android:layout_width="match_parent"android:layout_height="match_parent"/>
</LinearLayout>

fruit_item:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="horizontal"android:layout_width="match_parent"android:layout_height="wrap_content"><ImageViewandroid:id="@+id/fruit_image"android:layout_width="wrap_content"android:layout_height="wrap_content" /><TextViewandroid:id="@+id/fruit_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"/>
</LinearLayout>

Java代码:

MainActivity .java

public class MainActivity extends AppCompatActivity {private List<Fruit> fruitLists = new ArrayList<>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//初始化水果列表数据initFruits();//创建循环列表对象RecyclerView recycler_view = findViewById(R.id.recycler_view);//创建一个线性布局管理器对象//LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);//设置线性布局管理器的管理方向为水平管理//linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);//设置循环列表的布局管理器//创建一个3列垂直的瀑布流布局管理器对象StaggeredGridLayoutManager staggeredGridLayoutManager =new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL);recycler_view.setLayoutManager(staggeredGridLayoutManager);//创建列表数据适配器对象并把数据源关联上FruitAdapter fruitAdapter = new FruitAdapter(fruitLists);//让循环列表使用适配器对象recycler_view.setAdapter(fruitAdapter);}private void initFruits(){for (int i = 0; i < 2; i++) {Fruit apple = new Fruit(getRandomLengthName("Apple"), R.drawable.apple_pic);fruitLists.add(apple);Fruit banana = new Fruit(getRandomLengthName("Banana"), R.drawable.banana_pic);fruitLists.add(banana);Fruit orange = new Fruit(getRandomLengthName("Orange"), R.drawable.orange_pic);fruitLists.add(orange);Fruit watermelon = new Fruit(getRandomLengthName("Watermelon"), R.drawable.watermelon_pic);fruitLists.add(watermelon);Fruit pear = new Fruit(getRandomLengthName("Pear"), R.drawable.pear_pic);fruitLists.add(pear);Fruit grape = new Fruit(getRandomLengthName("Grape"), R.drawable.grape_pic);fruitLists.add(grape);Fruit pineapple = new Fruit(getRandomLengthName("Pineapple"), R.drawable.pineapple_pic);fruitLists.add(pineapple);Fruit strawberry = new Fruit(getRandomLengthName("Strawberry"), R.drawable.strawberry_pic);fruitLists.add(strawberry);Fruit cherry = new Fruit(getRandomLengthName("Cherry"), R.drawable.cherry_pic);fruitLists.add(cherry);Fruit mango = new Fruit(getRandomLengthName("Mango"), R.drawable.mango_pic);fruitLists.add(mango);}}private String getRandomLengthName(String name){Random random = new Random();int length = random.nextInt(20);StringBuilder stringBuilder = new StringBuilder();for(int i=0;i<length;i++){stringBuilder.append(name);}return stringBuilder.toString();}
}

FruitAdapter.java:

public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder> {private List<Fruit> fruitLists = null;//子项水果数据源列表public FruitAdapter(List<Fruit> fruitLists) {this.fruitLists = fruitLists;}@NonNull@Overridepublic ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {//得到子项布局的视图View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.fruit_item,parent,false);ViewHolder viewHolder = new ViewHolder(itemView);return viewHolder;}@Overridepublic void onBindViewHolder(@NonNull ViewHolder holder, int position) {Fruit fruit = fruitLists.get(position);//根据位置得到一个水果对象//将水果图片放到子项视图持有器的ImageView中holder.fruit_image.setImageResource(fruit.getImageId());//将水果名字放到子项视图持有器的TextView中holder.fruit_name.setText(fruit.getName());}@Overridepublic int getItemCount() {return fruitLists.size();}//列表子项的视图持有器static class ViewHolder extends RecyclerView.ViewHolder{ImageView fruit_image;TextView fruit_name;public ViewHolder(@NonNull View itemView) {super(itemView);fruit_image = itemView.findViewById(R.id.fruit_image);fruit_name = itemView.findViewById(R.id.fruit_name);}}
}

Fruit.java:

//自定义数据源类
public class Fruit {private String name;private int imageId;//水果图片ID号public Fruit(String name, int imageId) {this.name = name;this.imageId = imageId;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getImageId() {return imageId;}public void setImageId(int imageId) {this.imageId = imageId;}
}

4 实验运行结果图

5 实验总结

       先写布局文件,两个布局文件,分别是activity_main.xml布局文件和fruit_item.xml布局文件。在activity_main.xml布局文件中,设置了一个瀑布流列表;而fruit_item.xml布局文件中在列表中插入图片和文本框。

       写完布局文件开始写Java代码,初始化水果列表数据,创建循环列表对象,创建一个三列垂直的瀑布流布局管理器对象,创建列表数据适配器对象并把数据源关联上,让循环列表适用适配器对象,将水果图片和名字放到子项视图持有器中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/147994.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Mac系统Docker中SQLserver数据库文件恢复记录

Mac系统Docker中SQLserver数据库文件恢复记录 Mac想要安装SQLsever&#xff0c;通过docker去拉去镜像是最简单方法。 一、下载Docker Docker 下载安装&#xff1a; 需要‘科学上网’ 才能访问到docker官网。&#xff08; https://docs.docker.com/desktop/install/mac-ins…

18.2K Star,AI 高效视频监控摄像头

Hi&#xff0c;骚年&#xff0c;我是大 G&#xff0c;公众号「GitHub 指北」会推荐 GitHub 上有趣有用的项目&#xff0c;一分钟 get 一个优秀的开源项目&#xff0c;挖掘开源的价值&#xff0c;欢迎关注。 导语 在家庭和企业安防领域&#xff0c;实时视频监控是保障安全的核…

2024 SNERT 预备队招新 CTF 体验赛-Web

目录 1、robots 2、NOF12 3、get_post 4、好事慢磨 5、uploads 6、rce 7、ezsql 8、RCE 1、robots robots 协议又叫爬虫协议&#xff0c;访问 robots.txt 继续访问 /JAY.php 拿到 flag&#xff1a;flag{hello_Do_YOU_KONw_JAY!} 2、NOF12 F12 和右键都被禁用 方法&#…

22、Raven2

难度 中 目标 root权限 4个flag 使用Virtualbox启动 kali 192.168.86.105 靶机 192.168.86.106 信息收集 看到111端口有一个rpc相关的东西&#xff0c;去网上查看了一下是什么服务 通过在网上搜索发现这是一个信息泄露的漏洞&#xff0c;上面的这个端口其实就是泄露的端口和…

【Spring 底层原理】手搓一个Spring框架

文章目录 准备工作Spring 框架到底在干啥&#xff1f;几个概念辨析注解的定义自定义核心注解配置类启动类辅助类 Spring 容器XxxAware 回调机制初始化机制前置、后置处理器完整的容器代码源码下载 最近工作接触到的知识比较底层&#xff0c;因此为了突破瓶颈&#xff0c;彻底搞…

ubuntu+MobaXterm+ssh+运行Qt(成功版)

点击上方"蓝字"关注我们 01、ubuntu连接SSH >>> 通过串口工具连接ubuntu 登录 解决连接不上的问题 检查 SSH 服务:确保目标机器上 SSH 服务已启动。你可以在目标机器上运行以下命令: sudo systemctl status ssh 如果没有运行,可以使用以下命令启动 SSH …

英特尔AI加速器Gaudi 3下周发布,挑战NVIDIA统治地位!

英特尔正稳步推进其2024年计划&#xff0c;备受瞩目的AI加速器Gaudi3预计将于下周震撼登场。这款被誉为英特尔AI英雄的产品&#xff0c;专注于处理大规模训练和推理任务&#xff0c;拥有无与伦比的扩展能力。面对市场对高效能半导体的旺盛需求&#xff0c;英特尔首席执行官帕特…

FX5 CPU模块和以太网模块的以太网通信功能

FX5 CPU模块和以太网模块的以太网通信功能的概要如下所示。 CPU模块的内置以太网端口的通信规格如下所示。 1、与MELSOFT的直接连接 不使用集线器&#xff0c;用1根以太网电缆直接连接以太网搭载模块与工程工具(GX Torks3)。无需设定IP地址&#xff0c;仅连接目标指定即可进行…

无服务器计算构建人工智能管理区块链系统

图片发自简书App 图片发自简书App 本发明属于网络版权管理技术领域&#xff0c;特别涉及一种以交易信息作 为唯一标准发行虚拟币的区块链系统。 背景技术 数字代币如比特币、以太坊等是区块链技术的实现方式之一&#xff0c;目 标是取代法定货币流通&#xff0c;通过“挖矿”的…

前端-js例子:收钱转账

支付宝转账 在这里用到周期定时器setInterval(function,time)&#xff0c;设置达到目标钱数时停止定时器。 点击转账按钮时&#xff0c;开始函数显示。 同时要确定输入框里输入的是数字。&#xff08;有一定容错&#xff09; window.onloadfunction(){var btn document.que…

什么是慢充优惠话费充值api?如何选择平台

一、话费充值api的定义 话费充值api是一种能够让开发者将话费充值功能集成到自己的平台的接口。通过接入话费充值api接口&#xff0c;就能够实现话费充值平台的搭建&#xff0c;从而为用户提供话费充值服务&#xff0c;这一接口主要适用于对话费充值有长期稳定需求的企业或者商…

K8s容器运行时,移除Dockershim后存在哪些疑惑?

K8s容器运行时&#xff0c;移除Dockershim后存在哪些疑惑&#xff1f; 大家好&#xff0c;我是秋意零。 K8s版本截止目前&#xff08;24/09&#xff09;已经发布到了1.31.x版本。早在K8s版本从1.24.x起&#xff08;22/05&#xff09;&#xff0c;默认的容器运行时就不再是Doc…

排序-----归并排序(递归版)

核心思想&#xff1a;假设数组前后两部分各自有序&#xff0c;然后各定义两个指针&#xff0c;谁小谁放到新开辟的数组里面&#xff0c;最后把新开辟的数组赋值给原数组就完成了。要使前后两部分有序就采用递归的方式&#xff0c;不断往下划分块&#xff0c;最后一层划分为两个…

01 基础request

目录 类 WxRequest 的定义 静态属性 default 构造函数 constructor 方法 request HTTP 方法封装 创建 WxRequest 实例并导出 完整代码&#xff1a; 类 WxRequest 的定义 创建一个 WxRequest 类包含一个静态属性 default 和几个方法&#xff0c;用于处理网络请求。 静态…

【后端开发】JavaEE初阶—Theard类及常见方法—线程的操作(超详解)

前言&#xff1a; &#x1f31f;&#x1f31f;本期讲解多线程的知识哟~~~&#xff0c;希望能帮到屏幕前的你。 &#x1f308;上期博客在这里&#xff1a;【后端开发】JavaEE初阶—线程的理解和编程实现-CSDN博客 &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondl…

计算机毕业设计之:基于深度学习的路面检测系统(源码+部署文档+讲解)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

鸿蒙OpenHarmony【轻量系统内核扩展组件(CPU占用率)】子系统开发

基本概念 CPU&#xff08;中央处理器&#xff0c;Central Processing Unit&#xff09;占用率分为系统CPU占用率和任务CPU占用率。 系统CPU占用率&#xff1a;是指周期时间内系统的CPU占用率&#xff0c;用于表示系统一段时间内的闲忙程度&#xff0c;也表示CPU的负载情况。系…

INIT与init_array

INIT与init array 1.so执行JNI_OnLoad之前&#xff0c;还会执行俩个构造函数init 和init array 在so加载时候有这个过程&#xff1a; .init -> .init array -> JNI_Onload -> java_com_xxx 在脱壳的过程中会在一些系统级的.so中下断点比如&#xff1a;fopen&#x…

GUI编程19:贪吃蛇小游戏及GUI总结

视频链接&#xff1a;21、贪吃蛇之界面绘制_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1DJ411B75F?p21&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 1.游戏中用的的图片素材 1.贪吃蛇游戏的主启动类StartGame&#xff1b; package com.yundait.snake;import j…