Android-宝宝相册(第四次作业)
第四次作业-宝宝相册
题目
用Listview建立宝宝相册,相册内容及图片可自行设定,也可在资料文件中获取。给出模拟器仿真界面及代码截图。 (参考例4-8)
创建工程项目
创建名为baby的项目工程,最后的工程目录结构如下图所示:
res/drawable文件中的i1、i2、i3、i4、i5、i6均为图片,即宝宝相册图片,网上自行选取照片即可。
res/layout为文件布局文件,activity_main.xml为自动生成的自定义布局文件,list_item.xml为自定义布局文件
布局文件
-
创建自定义布局文件
list_item.xml文件<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"><ImageViewandroid:id="@+id/news_thumb"android:layout_width="100dp"android:layout_height="100dp"android:layout_margin="5dp"/><LinearLayoutandroid:orientation="vertical"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="5dp"><TextViewandroid:id="@+id/news_title"android:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="16sp" /><TextViewandroid:id="@+id/news_info"android:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="14sp"android:layout_marginTop="5dp"/></LinearLayout></LinearLayout> -
修改MainActivity.xml布局文件
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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"android:paddingLeft="16dp"android:paddingRight="16dp"><ListViewandroid:id="@+id/list"android:layout_width="match_parent"android:layout_height="match_parent"/></RelativeLayout>
MainActivity文件
package com.example.baby;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;public class MainActivity extends AppCompatActivity {private ListView listView;private SimpleAdapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 假设有一个包含数据的ListList<Map<String, String>> data = new ArrayList<>();Map<String, String> item1 = new HashMap<>();item1.put("news_thumb", String.valueOf(R.drawable.i1)); //R.drawable.i1引用照片资源文件item1.put("news_title", "毡帽系列");item1.put("news_info", "此系列服装有点cute,像不像小车夫。");data.add(item1);Map<String, String> item2 = new HashMap<>();item2.put("news_thumb", String.valueOf(R.drawable.i2)); //R.drawable.i2引用照片资源文件item2.put("news_title", "蜗牛系列");item2.put("news_info", "宝宝变成了小蜗牛,爬啊爬啊爬啊。");data.add(item2);Map<String, String> item3 = new HashMap<>();item3.put("news_thumb", String.valueOf(R.drawable.i3));item3.put("news_title", "小蜜蜂系列");item3.put("news_info", "小蜜蜂,嗡嗡嗡,飞到西,飞到东。");data.add(item3);Map<String, String> item4 = new HashMap<>();item4.put("news_thumb", String.valueOf(R.drawable.i4));item4.put("news_title", "毡帽系列");item4.put("news_info", "此系列服装有点cute,像不像小车夫。");data.add(item4);Map<String, String> item5 = new HashMap<>();item5.put("news_thumb", String.valueOf(R.drawable.i5));item5.put("news_title", "蜗牛系列");item5.put("news_info", "宝宝变成了小蜗牛,爬啊爬啊爬啊。");data.add(item5);Map<String, String> item6 = new HashMap<>();item6.put("news_thumb", String.valueOf(R.drawable.i6));item6.put("news_title", "小蜜蜂系列");item6.put("news_info", "小蜜蜂,嗡嗡嗡,飞到西,飞到东。");data.add(item6);// 定义数据的键与布局文件中组件的映射String[] from = {"news_thumb", "news_title", "news_info"};int[] to = {R.id.news_thumb, R.id.news_title, R.id.news_info};// 创建SimpleAdapteradapter = new SimpleAdapter(this, data, R.layout.list_item, from, to);// 关联SimpleAdapter与ListViewlistView = findViewById(R.id.list);listView.setAdapter(adapter);// 为ListView添加一个项目点击监听器,当点击项目时显示对话框listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {// 获取点击项目的数据Map<String, String> itemData = (Map<String, String>) parent.getItemAtPosition(position);// 从点击项目的数据中提取文本信息以供对话框使用String title = itemData.get("news_title");String info = itemData.get("news_info");// 创建并显示一个自定义对话框AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setTitle(title).setMessage(info).setPositiveButton("确定", null); // 没有操作的确定按钮AlertDialog dialog = builder.create();dialog.show();}});}
}
修改AndroidManifest.xml文件
<activityandroid:name=".MainActivity"android:exported="true"android:label="SimpleAdapterDemo"> <!--修改导航栏名称--><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>
</activity>
效果展示

相关文章:
Android-宝宝相册(第四次作业)
第四次作业-宝宝相册 题目 用Listview建立宝宝相册,相册内容及图片可自行设定,也可在资料文件中获取。给出模拟器仿真界面及代码截图。 (参考例4-8) 创建工程项目 创建名为baby的项目工程,最后的工程目录结构如下图所…...
Android应用:实现网络加载商品数据【OKHttp、Glide、Gson】
实现网络加载商品数据的功能: 1、在AndroidManifest.xml中声明网络权限; 2、在app/build.gradle中添加okhttp, glide, gson等必需的第3方库; 3、在MainActivity中通过OkHttpClient连接给定的Web服务,获取商品数据;对…...
增强常见问题解答搜索引擎:在 Elasticsearch 中利用 KNN 的力量
在快速准确的信息检索至关重要的时代,开发强大的搜索引擎至关重要。 随着大型语言模型和信息检索架构(如 RAG)的出现,在现代软件系统中利用文本表示(向量/嵌入)和向量数据库已变得越来越流行。 在本文中&am…...
常见网络攻击及防御方法总结(XSS、SQL注入、CSRF攻击)
网络攻击无时无刻不存在,其中XSS攻击和SQL注入攻击是网站应用攻击的最主要的两种手段,全球大约70%的网站应用攻击都来自XSS攻击和SQL注入攻击。此外,常用的网站应用攻击还包括CSRF、Session劫持等。 1、 XSS攻击 XSS攻击即跨站点脚本攻击&am…...
python爬虫request和BeautifulSoup使用
request使用 1.安装request pip install request2.引入库 import requests3.编写代码 发送请求 我们通过以下代码可以打开豆瓣top250的网站 response requests.get(f"https://movie.douban.com/top250")但因为该网站加入了反爬机制,所以…...
记录--vue3实现excel文件预览和打印
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 在前端开发中,有时候一些业务场景中,我们有需求要去实现excel的预览和打印功能,本文在vue3中如何实现Excel文件的预览和打印。 预览excel 关于实现excel文档在…...
消息队列中间件面试笔记总结RabbitMQ,Kafka,RocketMQ
文章目录 (一) Rabbit MQRabbitMQ 核心概念消息队列的作用Exchange(交换器)Broker(消息中间件的服务节点)如何保证消息的可靠性如何保证 RabbitMQ 消息的顺序性如何保证 RabbitMQ 高可用的?如何解决消息队列的延时以及过期失效问题消息堆积问…...
pycharm远程连接Linux服务器
文章目录 一:说明二:系统三:实现远程连接方式一: 直接连接服务器不使用服务器的虚拟环境步骤一:找到配置服务器的地方步骤二:进行连接配置步骤三:进行项目文件映射操作步骤四:让文件…...
Android应用开发(38)全屏显示隐藏状态栏和导航栏
Android应用开发学习笔记——目录索引 protected void onCreate(Bundle savedInstanceState) {/* 添加代码 */requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);WindowManager.LayoutParams lp ge…...
日本IT Week秋季展丨美格智能以技术创新共建美好数字生活
10月25日至27日,日本国际IT消费电子展览会(Japan IT Week 2023秋季展)在日本千叶幕张国际展览中心举行。日本IT周是日本IT市场的标杆,涵盖软件开发、大数据管理、嵌入式系统、数据存储、信息安全、数据中心、云计算、物联网&#…...
centos7 install postgres-15
env centos7 1.更新包,避免安装时出错 yum update 2. PostgreSQL: Linux downloads (Red Hat family) sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm sudo yum install -y post…...
JVM常见的垃圾回收器(详细)
1、Young为年轻代出发的垃圾回收器。 2、Old为老触发的垃圾回收器。 3、连线代表的是垃圾回收器的组合。CMS 和Serial Old连线代表CMS一旦不行了,Serial Old上场。 首先了解一个概念:STW 1、什么是STW? STW是Stop-The-World缩写: 是在垃圾回…...
acwing 5283. 牛棚入住
题目 - 点击直达 1. 5283. 牛棚入住1. 题目详情1. 原题链接2. 题目要求3. 基础框架 2. 解题思路1. 思路分析2. 时间复杂度3. 代码实现 1. 5283. 牛棚入住 1. 题目详情 贝茜经营的牛棚旅店中有 a 个可供一头牛入住的小牛栏和 b 个可供两头牛入住的大牛栏。 初始时,…...
Qt触摸屏双指缩放和单指移动界面(支持嵌入式设备)
本文介绍的QGraphicsView的双指缩放,QWidget更简单,可以参考当前内容。 方法一:(QTouchEvent事件实现) 使用场景:适用于paintevent绘制下的界面。 优点:不需要代码设置中心锚点(锚点…...
【Linux】虚拟机安装Linux、客户端工具,MobaXterm的使用,Linux常用命令
目录 一,安装Linux的centos7版本 具体安装步骤: 二,Linux常见的命令: 三、安装客户端工具 1、介绍 2、安装MobaXterm 3、换源 四、拍照功能 一,安装Linux的centos7版本 介绍: 具体安装步骤&#…...
springboot-scanBasePackages包扫描
目录 原因: 方式一: 方式二: 原因: 由于对rocketMq进行了一次封装,mq模块里面引用了RocketMQTemplate的bean,如果只引入jar包的依赖,启动的时候不会报错,但是在调用到 RocketMQT…...
【C语言数据结构——————排序(1万字)】
文章目录 排序的概念 常见排序算法分类冒泡排序 时间复杂度稳定性 原理实现插入排序 时间复杂度稳定性实现选择排序 时间复杂度稳定性实现希尔排序 时间复杂度稳定性希尔排序的算法思想实现 优化快速排序 时间复杂度空间复杂度稳定性实现 三数取中优化归并排序 时间复杂度空间复…...
PyTorch基础(18)-- torch.stack()方法
一、方法详解 首先,看一下stack的直观解释,动词可以简单理解为:把……放成一堆、把……放成一摞。 有了对stack方法的直观感受,接下来,我们正式解析torch.stack方法。 PyTorch torch.stack() method joins (concaten…...
从lc560“和为 K 的子数组“带你认识“前缀和+哈希表“的解题思路
1 前缀和哈希表解题的几道题目:建议集中练习 560. 和为 K 的子数组:https://leetcode.cn/problems/subarray-sum-equals-k/ 1248. 统计「优美子数组」: https://leetcode.cn/problems/count-number-of-nice-subarrays/ 1249. 和可被 K 整除的子数组(利用…...
c:变参函数:汇编解析;va_list;marco 宏:__VA_ARGS__
文章目录 参考gcc 内部的宏定义代码汇编调用在 SEI CERT C Coding Standard 这个标准里示例实例宏里的使用 参考 https://git.sr.ht/~gregkh/presentation-security/blob/3547183843399d693c35b502cf4a313e256d0dd8/security-stuff.pdf gcc 内部的宏定义 宏定义:…...
你的RAG应用安全吗?藏在向量数据库里的‘特洛伊木马’——外部数据注入风险详解
RAG应用安全深度剖析:如何抵御外部数据源中的"特洛伊木马" 当你在咖啡馆用手机查看银行账户时,是否想过那个看似无害的二维码可能藏着窃取密码的指令?类似的威胁正在AI领域上演——攻击者通过污染RAG(检索增强生成&…...
告别打印乱码与错位:手把手教你配置SAP Smartforms的CNSAPWIN打印机格式
告别打印乱码与错位:手把手教你配置SAP Smartforms的CNSAPWIN打印机格式 在SAP系统的日常使用中,打印问题是最令人头疼却又无法回避的挑战之一。想象一下,当你精心设计的发票Smartforms报表终于完成,却在打印时发现内容被截断、错…...
STM32 HAL库中那些‘魔法数字’的秘密:以GPIO模式宏定义为例,看懂位域操作与寄存器配置
STM32 HAL库中那些‘魔法数字’的秘密:以GPIO模式宏定义为例,看懂位域操作与寄存器配置 第一次翻开STM32 HAL库的头文件时,那些密密麻麻的十六进制数字和位移操作符就像一串串神秘的咒语。0x3uL << GPIO_MODE_Pos、~(GPIO_OSPEEDR_OSPE…...
Skills 系统——让 AI 秒变专家
1. 技能的本质:提示词工程 在 nanobot 中,一个技能就是一个文件夹,核心是里面的 SKILL.md。 nanobot内置的skills放在project_path/nanobot/skills目录下,用户自定义的skills放在workspace/.nanobot/skills目录下 以 weather 技…...
Bugtton:ATmega328P专用超低开销按钮消抖库
1. 项目概述Bugtton 是一款专为 ATmega328P 微控制器深度优化的轻量级按钮消抖库,其设计哲学直指嵌入式系统中一个被长期忽视却至关重要的性能瓶颈:空闲状态下的 CPU 周期开销。在传统 Arduino 风格的按钮处理方案中,digitalRead()函数因其通…...
离谱又惊艳!C++隐藏宝藏库numeric_range深度探索,竟藏着JS彩蛋和隐零点
文章目录离谱又惊艳!C隐藏宝藏库numeric_range深度探索,竟藏着JS彩蛋和隐零点一、初遇:以为是青铜,实则是王者二、深挖:废弃方法的“马甲现场”,官方摆烂实锤三、惊现:一整个范围家族࿰…...
【2026年最新600套毕设项目分享】springboot校园二手交易系统(14339)
有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告/任务书)远程调试控屏包运行一键启动项目&…...
深度解析:Agent 如何处理“开放性目标”与“约束性规则”的冲突?
深度解析:Agent 如何处理“开放性目标”与“约束性规则”的冲突? 1. 引言 (Introduction) 1.1 核心概念锚定与常见误解破冰 在正式展开冲突处理的技术细节之前,我们必须先锚定文章涉及的三个最核心、最容易被模糊定义/误解的AI Agent领域概念…...
如何用DS4Windows让PS手柄在PC游戏世界畅通无阻
如何用DS4Windows让PS手柄在PC游戏世界畅通无阻 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 你是否曾遇到这样的尴尬场景:购买了心仪的PS4或PS5手柄,想在PC上畅…...
3个技巧让N_m3u8DL-RE流媒体下载更高效
3个技巧让N_m3u8DL-RE流媒体下载更高效 【免费下载链接】N_m3u8DL-RE Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE 还在为喜欢的在线视频无…...
