R学习之第七步

     无论在何时分析数据,第一件要做的事情就是观察它。对于每个变量,哪些值是最常见 的?值域是大是小?是否有不寻常的观测?R中提供了丰富的数据可视化函数。这节课将展开对R中条形图,饼图,扇形图,直方图等图的了解。

1.条形图:通过垂直的或水平的条形展示了类别型变量的分布(频数)。函数barplot()的最简 单用法是:barplot(height) ,其中height是一个向量或一个矩阵。

代码barplot(c(1,2,4,2,6,4,3,5)) 显示出如下图形:(但如果加上horiz=TRUE,将显示横向条形图)

堆砌条形图:如果height是一个矩阵而不是一个向量,则绘图结果将是一幅堆砌条形图或分组条形图

上图为堆砌条形图,代码counts<-table(Arthritis$Improved,Arthritis$Treatment,beside=TRUE)将显示为分组条形图

条形图并不一定要基于计数数据或频率数据。你可以使用数据整合函数并将结果传递给 barplot()函数,来创建表示均值、中位数、标准差等的条形图

2.饼图:饼图可由以下函数创建: pie(x, labels) 其中x是一个非负数值向量,表示每个扇形的面积,而labels则是表示各扇形标签的字符型向量。

par(mfrow=c(2,2))
x <- c(10,12,4,16,8)
lab<-c("US","UK","Australia","Germary","France")
pie(x,lab,main = "Simple Pie Chart")

上述代码将表现出如下饼状图

rainbow() 函数定义了各扇形的颜色

3D饼图:绘制3D饼图之前要先下载安装plotrix,install.packages("plotrix"),library(plotrix)

代码  pie3D(x,explode = 0.1,main="3D pie Chart")  显示出下面3D饼图

代码fan.plot(x,labels = lab,main = "Fan plot") 显示出下面扇形图

3.直方图

直方图通过在x轴上将值域分割为一定数量的组,在y轴上显示相应值的频数,展示了连续型变量的分布。可以使用如下函数创建直方图: hist(x) 其中的x是一个由数据值组成的数值向量。

使用lines(density(x),col="red",lwd=2)可以画出直方图的轴须线,反映整个数值呈现的频率变化情况

4.核密度图:核密度估计是用于估计随机变 量概率密度函数的一种非参数方法。

sm包中的sm.density.compare()函数可向图形叠加两组或更多的核密度图。使用格式为: sm.density.compare(x, factor) 其中的x是一个数值型向量,factor是一个分组变量。在第一次使用sm包之前要安装它。

5.箱线图:箱线图(又称盒须图)通过绘制连续型变量的五数总括,即最小值、下四分位数(第25百分 位数)、中位数(第50百分位数)、上四分位数(第75百分位数)以及最大值,描述了连续型变量 的分布。

代码boxplot(mtcars$mpg,main="Box Plot",ylab="Mile per gallon") 将显示如下图形

两个跟R有关的网站

http://biotrainee.com/jmzeng/markdown/basic-plot-R.html

http://biotrainee.com/jmzeng/markdown/ggplot-in-R.html

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
代码下载:完整代码,可直接运行 ;运行版本:2014a或2019b;若运行有问题,可私信博主; 博主优势:精通Matlab各领域,且各项目代码较全,可供指导交流。 座右铭:行百里者,半于九十。 1 第一步:海神之光博主主页https://blog.csdn.net/TIQCmatlab?type=blog 2 第二步:搜索相关内容,回车或者点击;然后就出现您需要的文章: 3 Matlab软件下载 与善其事,必先利其器。学习matlab,必须要先下载好matlab软件。 下载链接:Matlab R2020a版安装下载详细操作步骤【Matlab 140期】 4 Matlab基础教程 我们在学习matlab时,如果前面所学知识有部分遗忘,可以及时翻阅课本加深记忆。因此,虽然现在互联网已经非常的发达,但是有一本纸质版的图书也是非常有必要的。 5 学会使用互联网查找知识 现在的互联网非常强大,只靠一本纸质书籍是远远不够的。我们还要学会在网上找一些matlab相关的基础知识进行学习。 6及时进行练习,以免眼高手低 matlab软件要及时的使用起来。我们在学习基础知识时,肯定会遇到很多的小的例子。即使我们对这些例子都能理解也要多使用matlab软件进行验证,看看我们敲出来代码是否也能正常运行。 7 遇到问题及时向博主求助 作为初学者,遇见不会的问题是非常正常的事情。海神之光擅长领域擅长路径规划、优化求解、神经网络预测、图像处理、语音处理等多种领域Matlab仿真,具体代码仿真 私信博主。
会计学 1 计算机数据库基础及应用 计算机数据库基础及应用PPT学习教案全文共14页,当前为第1页。 任务一 定位记录 定位记录的3种方法: 1.在浏览窗口定位记录 2.使用命令定位记录 3.菜单定位记录 任务概述 第1页/共14页 计算机数据库基础及应用PPT学习教案全文共14页,当前为第2页。 在浏览窗口定位记录 打开学生情况表的浏览窗口,直接单击记录选择器即可实现定位记录。 如图所示: 第2页/共14页 计算机数据库基础及应用PPT学习教案全文共14页,当前为第3页。 2.使用命令定位记录 命令:Go <数值表达式> 功能:将记录指针定位到指定的位置。 说明:<数值表达式>的值为要指向记录 的记录号,其取值为正数。 特殊格式:go top " bottom 功能:将指针定位到首记录或尾记录。 (1)绝对定位 第3页/共14页 计算机数据库基础及应用PPT学习教案全文共14页,当前为第4页。 例1: 绝对定位 Use xsqk Go bottom Go 3 Go top use &&定位到尾记录 &&定位到3号记录 &&定位到首记录 第4页/共14页 计算机数据库基础及应用PPT学习教案全文共14页,当前为第5页。 (2)相对定位 命令:skip [<数值表达式>] 功能:以当前记录为基点,将记录指针向前 或向后移动指定条记录。 说明: a.若< 数值表达式> 为正,则向记录号 大方向移;超过记录号范围 b.若< 数值表达式> 为负,则向记录号 小的方向移; c.若为1,可简写为Skip。 第5页/共14页 计算机数据库基础及应用PPT学习教案全文共14页,当前为第6页。 例2: 相对定位记录 Use xsqk Skip Skip 3 Skip -2 use &&定位到5号记录 &&定位到3号记录 &&定位到下一条记录即2号记录 第6页/共14页 计算机数据库基础及应用PPT学习教案全文共14页,当前为第7页。 (4)条件定位 命令:locate [<范围>][<for条件>] continue 功能:在当前数据表按记录顺序依次查找满足条件 的第1条记录,然后使用continue命令继续查找。 说明:若没找到满足条件的记录,指针指到文件尾。 查找测试函数:Found() 功能:测试最后一次条件查找是否找到,找到为.T. 反之为.F. 第7页/共14页 计算机数据库基础及应用PPT学习教案全文共14页,当前为第8页。 3.菜单定位记录 具体操作步聚: 打开要操作的表。 单击"显示"—>"浏览"菜单,打开浏览窗口。 单击"表"—>"转到记录"菜单,弹出下一级菜单。 根据而要选择相应的菜单项。 第8页/共14页 计算机数据库基础及应用PPT学习教案全文共14页,当前为第9页。 菜单项与命令操作的对应关系如图: 第一个(T) 最后一个(B) 下一个(N) 上一个(p) 记录号(R) 定位 (L) ————go top ————go bottom ————ship ————skip -1 ————go n ————locate for 第9页/共14页 计算机数据库基础及应用PPT学习教案全文共14页,当前为第10页。 练习与思考 1.填空题 (1)定位记录就是将指针移到相应的记录上,按定位的方式分为____________________ _______,其命令关键字分别是 (2)Go top 命令的作用是 2.判断题 ( )(1)相对定位是以当前记录为基准,向上或向下移 动记录指针。 ( )(2)表文件头就是表的首记录,文件尾就是尾记录。 ( )(3)当数据表刚打开时,记录指针指妻文件头, Bof()的值为.T. ( )(4) go <数值表达式> ,数值表达式的值不能超过最大记录号。 3. 写出下列 第10页/共14页 计算机数据库基础及应用PPT学习教案全文共14页,当前为第11页。 (3)相关函数 Record() 功能:测试当前记录的记录号。 说明:当指针指到文件头或表无记录时,函数值为 1。 当指针指到文件尾时,函数值为最大记录号加 1。 Reccount() 功能:测试当前表的记录总数。 说明:当表无记录时,函数值为 0。 Bof () 功能:测试记录指针是否到了文件头。是为.T. 反之为.F. Eof() 功能:测试记录指针是不到了文件尾。是为.F. 反之为.F. 表无记录时,bof()和eof()都为真。 第11页/共14页 计算机数据库基础及应用PPT学习教案全文共14页,当前为第12页。 数据表文件的记录范围与记录指针的移动关系如图所示: 文件头 首记录 . . . 第i条记录 . . . 尾记录 文件尾 skip -1 Go top Go i Go bottom skip Bof()=.T.
LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。 §1 LINGO快速入门 当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口: 外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。下面举两个例子。 例1.1 如何在LINGO求解如下的LP问题: 在模型窗口输入如下代码: min=2*x1+3*x2; x1+x2>=350; x1>=100; 2*x1+x2<=600; 然后点击工具条上的按钮 即可。 例1.2 使用LINGO软件计算6个发点8个收点的最小费用运输问题。产销单位运价如下表。 单 位 销地 运 价 产地 B1 B2 B3 B4 B5 B6 B7 B8 产量 A1 6 2 6 7 4 2 5 9 60 A2 4 9 5 3 8 5 8 2 55 A3 5 2 1 9 7 4 3 3 51 A4 7 6 7 3 9 2 7 1 43 A5 2 3 9 5 7 2 6 5 41 A6 5 5 2 2 8 1 4 3 52 销量 35 37 22 32 41 32 43 38 使用LINGO软件,编制程序如下: model: !6发点8收点运输问题; sets: warehouses/wh1..wh6/: capacity; vendors/v1..v8/: demand; links(warehouses,vendors): cost, volume; endsets !目标函数; min=@sum(links: cost*volume); !需求约束; @for(vendors(J): @sum(warehouses(I): volume(I,J))=demand(J)); !产量约束; @for(warehouses(I): @sum(vendors(J): volume(I,J))<=capacity(I)); !这里是数据; data: capacity=60 55 51 43 41 52; demand=35 37 22 32 41 32 43 38; cost=6 2 6 7 4 2 9 5 4 9 5 3 8 5 8 2 5 2 1 9 7 4 3 3 7 6 7 3 9 2 7 1 2 3 9 5 7 2 6 5 5 5 2 2 8 1 4 3; enddata end 然后点击工具条上的按钮 即可。 为了能够使用LINGO的强大功能,接着第二节的学习吧。 §2 LINGO的集 对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群体、交通工具和雇工等等。LINGO允许把这些相联系的对象聚合成集(sets)。一旦把对象聚合成集,就可以利用集来最大限度的发挥LINGO建模语言的优势。 现在我们将深入介绍如何创建集,并用数据初始化集的属性。学完本节后,你对基于建模技术的集如何引入模型会有一个基本的理解。 2.1 为什么使用集 集是LINGO建模语言的基础,是程序设计最强有力的基本构件。借助于集,能够用一个单一的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型。 2.2 什么是集 集是一群相联系的对象,这些对象也称为集的成员。一个集可能是一系列产品、卡车或雇员。每个集成员可能有一个或多个与之有关联的特征,我们把这些特征称为属性。属性值可以预先给定,也可以是未知的,有待于LINGO求解。例如,产品集的每个产品可以有一个价格属性;卡车集的每辆卡车可以有一个牵引力属性;雇员集的每位雇员可以有一个薪水属性,也可以有一个生日属性等等。 LINGO有两种类型的集:原始集(primitive set)和派生集(derived set)。 一个原始集是由一些最基本的对象组成的。 一个派生集是用一个或多个其它集来定义的,也就是说,它的成员来自于其它已存在的集。 2.3 模型的集部分 集部分是LINGO模型的一个可选部分。在LINGO模型使用集之前,必须在集部分事先定义。集部分以关键字“sets:”开始,以“endsets”结束。一个模型可以没有集部分,或有一个简单的集部分,或有多个集部分。一个集部分可以放置于模型的任何地方,但是一个集及其属性
代码下载:完整代码,可直接运行 ;运行版本:2014a或2019b;若运行有问题,可私信博主; **仿真咨询 1 各类智能优化算法改进及应用** 生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化 **2 机器学习和深度学习方面** 卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断 **3 图像处理方面** 图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知 **4 路径规划方面** 旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化 **5 无人机应用方面** 无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配 **6 无线传感器定位及布局方面** 传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化 **7 信号处理方面** 信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化 **8 电力系统方面** 微电网优化、无功优化、配电网重构、储能配置 **9 元胞自动机方面** 交通流 人群疏散 病毒扩散 晶体生长 **10 雷达方面** 卡尔曼滤波跟踪、航迹关联、航迹融合 博主优势:精通Matlab各领域,且各项目代码较全,可供指导交流。 座右铭:行百里者,半于九十。 1 第一步:海神之光博主主页https://blog.csdn.net/TIQCmatlab?type=blog 2 第二步:搜索相关内容,回车或者点击;然后就出现您需要的文章: 3 Matlab软件下载 与善其事,必先利其器。学习matlab,必须要先下载好matlab软件。 下载链接:Matlab R2020a版安装下载详细操作步骤【Matlab 140期】 4 Matlab基础教程 我们在学习matlab时,如果前面所学知识有部分遗忘,可以及时翻阅课本加深记忆。因此,虽然现在互联网已经非常的发达,但是有一本纸质版的图书也是非常有必要的。 5 学会使用互联网查找知识 现在的互联网非常强大,只靠一本纸质书籍是远远不够的。我们还要学会在网上找一些matlab相关的基础知识进行学习。 6及时进行练习,以免眼高手低 matlab软件要及时的使用起来。我们在学习基础知识时,肯定会遇到很多的小的例子。即使我们对这些例子都能理解也要多使用matlab软件进行验证,看看我们敲出来代码是否也能正常运行。 7 遇到问题及时向博主求助 作为初学者,遇见不会的问题是非常正常的事情。海神之光擅长领域擅长路径规划、优化求解、神经网络预测、图像处理、语音处理等多种领域Matlab仿真,具体代码仿真 私信博主。
实验7:使用ListView显示数据 实验目的: 1. 熟悉ListView的使用方法; 2. 学会使用SimpleAdapter和BaseAdapter自定义适配器; 3. 学会使用SQLite数据库存储数据。 实验内容: 本实验要求使用ListView显示一个学生信息列表,每个学生信息包括姓名、性别、年龄和成绩。学生信息可以手工输入或者从SQLite数据库读取。实验要求使用SimpleAdapter和BaseAdapter自定义适配器分别实现ListView的显示。 实验步骤: 第一步:创建项目 首先,创建一个Android项目,取名为“ListviewDemo”。在MainActivity添加一个ListView和一个Button控件。 第二步:创建布局文件 在res/layout目录下创建一个名为“item_layout.xml”的布局文件,用于显示学生信息列表的每一项。 ```xml <?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" android:padding="10dp"> <TextView android:id="@+id/tv_name" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="姓名"/> <TextView android:id="@+id/tv_gender" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="性别"/> <TextView android:id="@+id/tv_age" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="年龄"/> <TextView android:id="@+id/tv_score" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="成绩"/> </LinearLayout> ``` 第三步:创建数据模型 在src/main/java目录下创建一个名为“Student.java”的Java类,用于存储学生信息。 ```java public class Student { private String name; private String gender; private int age; private float score; public Student(String name, String gender, int age, float score) { this.name = name; this.gender = gender; this.age = age; this.score = score; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public float getScore() { return score; } public void setScore(float score) { this.score = score; } } ``` 第四步:创建SQLite数据库 在src/main/java目录下创建一个名为“DBHelper.java”的Java类,用于创建和管理SQLite数据库。 ```java public class DBHelper extends SQLiteOpenHelper { private static final String DB_NAME = "students.db"; // 数据库名称 private static final int DB_VERSION = 1; // 数据库版本号 public DBHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Override public void onCreate(SQLiteDatabase db) { // 创建数据库表 db.execSQL("CREATE TABLE students (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, gender TEXT, age INTEGER, score REAL)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 升级数据库表 db.execSQL("DROP TABLE IF EXISTS students"); onCreate(db); } } ``` 第五步:实现SimpleAdapter适配器 在MainActivity实现SimpleAdapter适配器,用于显示学生信息列表。 ```java public class MainActivity extends AppCompatActivity { private ListView listView; private Button addButton; private List<Map<String, Object>> dataList; private SimpleAdapter simpleAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 获取ListView和Button控件 listView = findViewById(R.id.list_view); addButton = findViewById(R.id.add_button); // 初始化数据列表 dataList = new ArrayList<>(); simpleAdapter = new SimpleAdapter(this, dataList, R.layout.item_layout, new String[] {"name", "gender", "age", "score"}, new int[] {R.id.tv_name, R.id.tv_gender, R.id.tv_age, R.id.tv_score}); listView.setAdapter(simpleAdapter); // 添加学生信息按钮的点击事件处理 addButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 弹出对话框,手工输入学生信息 final EditText nameEditText = new EditText(MainActivity.this); final EditText genderEditText = new EditText(MainActivity.this); final EditText ageEditText = new EditText(MainActivity.this); final EditText scoreEditText = new EditText(MainActivity.this); LinearLayout linearLayout = new LinearLayout(MainActivity.this); linearLayout.setOrientation(LinearLayout.VERTICAL); linearLayout.addView(new TextView(MainActivity.this).setText("姓名:")); linearLayout.addView(nameEditText); linearLayout.addView(new TextView(MainActivity.this).setText("性别:")); linearLayout.addView(genderEditText); linearLayout.addView(new TextView(MainActivity.this).setText("年龄:")); linearLayout.addView(ageEditText); linearLayout.addView(new TextView(MainActivity.this).setText("成绩:")); linearLayout.addView(scoreEditText); AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("添加学生信息"); builder.setView(linearLayout); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 将输入的学生信息添加到数据列表 String name = nameEditText.getText().toString(); String gender = genderEditText.getText().toString(); int age = Integer.parseInt(ageEditText.getText().toString()); float score = Float.parseFloat(scoreEditText.getText().toString()); Map<String, Object> map = new HashMap<>(); map.put("name", name); map.put("gender", gender); map.put("age", age); map.put("score", score); dataList.add(map); simpleAdapter.notifyDataSetChanged(); } }); builder.setNegativeButton("取消", null); builder.show(); } }); } } ``` 第六步:实现BaseAdapter适配器 在MainActivity实现BaseAdapter适配器,用于显示学生信息列表。 ```java public class StudentAdapter extends BaseAdapter { private List<Student> studentList; private Context context; public StudentAdapter(List<Student> studentList, Context context) { this.studentList = studentList; this.context = context; } @Override public int getCount() { return studentList.size(); } @Override public Object getItem(int position) { return studentList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = LayoutInflater.from(context).inflate(R.layout.item_layout, parent, false); holder = new ViewHolder(); holder.nameTextView = convertView.findViewById(R.id.tv_name); holder.genderTextView = convertView.findViewById(R.id.tv_gender); holder.ageTextView = convertView.findViewById(R.id.tv_age); holder.scoreTextView = convertView.findViewById(R.id.tv_score); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } Student student = studentList.get(position); holder.nameTextView.setText(student.getName()); holder.genderTextView.setText(student.getGender()); holder.ageTextView.setText(String.valueOf(student.getAge())); holder.scoreTextView.setText(String.valueOf(student.getScore())); return convertView; } static class ViewHolder { TextView nameTextView; TextView genderTextView; TextView ageTextView; TextView scoreTextView; } } ``` 在MainActivity使用BaseAdapter适配器,用于显示学生信息列表。 ```java public class MainActivity extends AppCompatActivity { private ListView listView; private Button addButton; private List<Student> studentList; private StudentAdapter studentAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 获取ListView和Button控件 listView = findViewById(R.id.list_view); addButton = findViewById(R.id.add_button); // 初始化数据列表 studentList = new ArrayList<>(); studentAdapter = new StudentAdapter(studentList, this); listView.setAdapter(studentAdapter); // 添加学生信息按钮的点击事件处理 addButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 弹出对话框,手工输入学生信息 final EditText nameEditText = new EditText(MainActivity.this); final EditText genderEditText = new EditText(MainActivity.this); final EditText ageEditText = new EditText(MainActivity.this); final EditText scoreEditText = new EditText(MainActivity.this); LinearLayout linearLayout = new LinearLayout(MainActivity.this); linearLayout.setOrientation(LinearLayout.VERTICAL); linearLayout.addView(new TextView(MainActivity.this).setText("姓名:")); linearLayout.addView(nameEditText); linearLayout.addView(new TextView(MainActivity.this).setText("性别:")); linearLayout.addView(genderEditText); linearLayout.addView(new TextView(MainActivity.this).setText("年龄:")); linearLayout.addView(ageEditText); linearLayout.addView(new TextView(MainActivity.this).setText("成绩:")); linearLayout.addView(scoreEditText); AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("添加学生信息"); builder.setView(linearLayout); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 将输入的学生信息添加到数据列表 String name = nameEditText.getText().toString(); String gender = genderEditText.getText().toString(); int age = Integer.parseInt(ageEditText.getText().toString()); float score = Float.parseFloat(scoreEditText.getText().toString()); Student student = new Student(name, gender, age, score); studentList.add(student); studentAdapter.notifyDataSetChanged(); } }); builder.setNegativeButton("取消", null); builder.show(); } }); } } ``` 第七步:测试应用程序 在模拟器或者真机上运行应用程序,查看ListView是否能正常显示学生信息列表。可以手工输入学生信息,也可以从SQLite数据库读取学生信息。 实验总结: 本实验通过ListView控件实现了学生信息列表的显示,并使用SimpleAdapter和BaseAdapter自定义适配器分别实现了ListView的显示。同时,还学习了使用SQLite数据库存储数据的方法。在实际应用,ListView是一个非常常用的控件,可以用于显示各种类型的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值