ListView
效果图
1、在activity_main.xml中创建ListView,再创建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="vertical"><ListViewandroid:id="@+id/lv"android:layout_width="match_parent"android:layout_height="match_parent"/></LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/tv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="30sp"/></LinearLayout>
2、MainActivity.java
package com.example.myapplication;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
import java.util.List;public class MainActivity extends AppCompatActivity {private List<Bean> data = new ArrayList<>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);
// 每个item显示的内容for (int i = 0; i < 100; i++) {Bean bean = new Bean();bean.setName("局长,我想进步了!" + i);data.add(bean);}ListView lv = findViewById(R.id.lv);lv.setAdapter(new MyAdapter(data, this));// 触发item点击事件lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {Log.e("leo", "onItemClick" + i);}});}
}
3、创建Bean类
package com.example.myapplication;public class Bean {String name;public String getName() {return name;}public void setName(String name) {this.name = name;}
}
4、创建一个适配器MyAdapter
package com.example.myapplication;import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;import java.util.List;public class MyAdapter extends BaseAdapter {private List<Bean> data;private Context context;public MyAdapter(List<Bean> data, Context context) {this.data = data;this.context = context;}@Overridepublic int getCount() {return data.size();}@Overridepublic Object getItem(int i) {return null;}@Overridepublic long getItemId(int i) {return i;}@Overridepublic View getView(int i, View view, ViewGroup viewGroup) {if (view == null) {view = LayoutInflater.from(context).inflate(R.layout.list_item,viewGroup,false);}TextView textView = view.findViewById(R.id.tv);textView.setText(data.get(i).getName());Log.e("leo","getView" + i);return view;}
}
上述标红处需重点理解
5、使用ViewHolder优化适配器
降低findViewById的使用,提高运行速度
package com.example.myapplication;import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;import java.util.List;public class MyAdapter extends BaseAdapter {private List<Bean> data;private Context context;public MyAdapter(List<Bean> data, Context context) {this.data = data;this.context = context;}@Overridepublic int getCount() {return data.size();}@Overridepublic Object getItem(int i) {return null;}@Overridepublic long getItemId(int i) {return i;}@Overridepublic View getView(int i, View view, ViewGroup viewGroup) {ViewHolder viewHolder;if (view == null) {viewHolder = new ViewHolder();view = LayoutInflater.from(context).inflate(R.layout.list_item,viewGroup,false);viewHolder.textView = view.findViewById(R.id.tv);view.setTag(viewHolder);} else {viewHolder = (ViewHolder) view.getTag();}viewHolder.textView.setText(data.get(i).getName());Log.e("leo","getView" + i);return view;}private final class ViewHolder {TextView textView;}
}
相关文章:

ListView
效果图 1、在activity_main.xml中创建ListView,再创建list_item.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match…...

gptoolbox matlab工具箱cmake 调试笔记
一、问题描述 起因:在matlab中运行Offset surface of triangle mesh in matlab的时候报错: 不支持将脚本 signed_distance 作为函数执行: E:\MATLAB_File\gptoolbox\mex\signed_distance.m> 出错 offset_bunny (第 22 行) D signed_distance(BC,V,F…...
Python面试题:请编写一个函数,计算一个字符串中每个字符的出现频率
当然,可以通过使用 Python 编写一个函数来计算字符串中每个字符的出现频率。下面是一个示例函数: def char_frequency(s):"""计算字符串中每个字符的出现频率参数:s (str): 输入字符串返回:dict: 一个字典,其中键是字符&…...

MacOS如何切换shell类型
切换 shell 类型 如果你想在不同的 shell 之间切换,以探索它们的不同之处,或者因为你知道自己需要其中的一个或另一个,可以使用如下命令: 切换到 bash chsh -s $(which bash)切换到 zsh chsh -s $(which zsh)$()语法的作用是运…...
Qt QSettings 使用详解:跨平台的配置管理
文章目录 Qt QSettings 使用详解:跨平台的配置管理一、QSettings 概述1. QSettings 的基本使用二、不同平台上的实现1. Windows 平台注册表存储INI 文件存储2. Linux 平台3. macOS 平台三、QSettings 高级用法1. 使用组管理设置2. 检查和移除设置3. 枚举键四、总结Qt QSetting…...

确定适合您需求的负载组
大多数关键任务行业都使用 UPS 和发电机等备用电源在停电期间为其设施提供持续电力。负载组允许您在需要时测试电源,以确保在您最需要的时候提供可靠的电力。 选择正确的负载组对于准确的电源测试至关重要。为了帮助您找到最适合您设施需求的负载组,EAK…...

Xubuntu24.04之设置高性能模式两种方式(二百六十一)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP…...
【自适应滤波系列五】基于LMS算法的回声消除(Acoustic Echo Cancellation, AEC)
自适应滤波算法的思想,在上一篇博客中已经进行了详细的描述,本文主要谈谈自适应滤波算法的其中之一LMS算法在回声消除中的应用。 LMS算法由来和思想 在自适应滤波中,基于信号的统计特性构造代价函数 E [ ∣ e ( n ) ∣ 2 ] E\left[|e(n)|^2 \right] E...

matlab 卷积和多项式乘法
目录 一、算法原理1、原理概述2、主要函数二、代码实现1、通过卷积计算多项式乘法2、向量卷积3、卷积的中心部分三、参考链接一、算法原理 1、原理概述 两个向量 u u u和 v v v的卷积,表示...

数据跨境传输法规日趋完善,企业如何规避合规风险?
随着全球化的发展,跨境数据传输变得日益频繁。在数字化时代,数据安全是企业运营的关键。数据跨境传输由于涉及不同国家和地区,其安全合规性面临着更大的风险和挑战。 2022年,国家网信办发布了《数据出境安全评估办法》(…...

工业机床CNC设备如何上云?
工业机床CNC设备如何上云? 工业机床的计算机数控(CNC)设备实现远程监控数据上云,是现代制造业智能化转型的关键一环。这一过程不仅能够实时监测设备状态、优化生产流程,还能通过大数据分析提升生产效率与产品质量&…...
Android C++系列:Linux进程间关系
1. 终端 在UNIX系统中,用户通过终端登录系统后得到一个Shell进程,这个终端成为Shell进 程的控制终端(Controlling Terminal),在前面文章我们说过,控制终端是保存在PCB中的信 息,而我们知道fork会复制PCB中的信息,因此由Shell进程启动的其它进程的控制终端也是 这个终端。…...

使用bypy丝滑传递百度网盘-服务器文件
前言 还在为百度网盘的数据集难以给服务器做同步而痛苦吗,bypy来拯救你了!bypy是一个强大而灵活的百度网盘命令行客户端工具。它是基于Python开发的开源项目,为用户提供了一种通过命令行界面与百度网盘进行交互的方式。使用bypy,…...

关于Python的类的一些理解
才发现python的类对象只能调用类方法 我想使用对类对象a使用系统调用的len方法就会报错 2.类对象a是什么? 答:是所有的带有self的成员变量 举例说明:红色的就是a里面的东西 class A:def __init__(self,data):self.datadataself.b1self.d{a…...

WEB安全基础:网络安全常用术语
一、攻击类别 漏洞:硬件、软件、协议,代码层次的缺陷。 后⻔:方便后续进行系统留下的隐蔽后⻔程序。 病毒:一种可以自我复制并传播,感染计算机和网络系统的恶意软件(Malware),它能损害数据、系统功能或拦…...
ubuntu防火墙指定端口开放设置
文章目录 打开某个端口查看防火墙状态和开放端口例子 在 Ubuntu 中管理防火墙通常使用 ufw(Uncomplicated Firewall)。以下是打开某个端口并查看防火墙状态的方法: 打开某个端口 启用 ufw(如果尚未启用): …...

Python OpenCV 教学取得视频资讯
这篇教学会介绍使用OpenCV,取得影像的长宽尺寸、以及读取影像中某些像素的颜色数值。 因为程式中的OpenCV 会需要使用镜头或GPU,所以请使用本机环境( 参考:使用Python 虚拟环境) 或使用Anaconda Jupyter 进行实作( 参考:使用Anaco…...

高频面试题基本总结回顾1(含笔试高频算法整理)
干货分享,感谢您的阅读! (暂存篇---后续会删除,完整版和持续更新见高频面试题基本总结回顾(含笔试高频算法整理)) 备注:引用请标注出处,同时存在的问题请在相关博客留言…...
【回溯+双指针算法题记录】回文字符串汇总
目录 验证回文串题目描述题目分析cpp代码 131. 分割回文串题目描述题目分析cpp代码 验证回文串 题目🔗 题目描述 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字…...
【AI资讯早报】AI科技前沿资讯概览:2024年7月10日早报
AI科技前沿资讯概览,涵盖了行业大会、技术创新、应用场景、行业动态等多个方面,全面展现了AI领域的最新发展动态和未来趋势。 一、人工智能大模型引领新业态 在2024年(第二十三届)中国互联网大会上,中国工程院院士邬贺…...

Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...

高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...

Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...