零、本讲学习目标

理解列表视图的四大组成元素
能使用基于数组适配器的列表视图
能使用基于简单适配器的列表视图
能使用基于基适配器的列表视图

一、导入新课

列表视图是基于适配器的供用户从多个选项中进行选择控件,可以通过滑动显示很多列表项。

二、新课讲解

(一)列表视图概述

1、继承关系图

列表视图(ListView)继承了抽象列表视图(AbsListView),而抽象列表视图又继承了适配器视图(AdapterView)。适配器视图具有共同的特征,就是利用适配器将数据源与展示控件绑定起来。

2、列表视图API文档

  • ListView  |  Android Developers

3、列表视图四要素

要素 说明
列表控件 显示多项供用户选择
适配器 数组适配器、简单适配器、游标适配器、基适配器
数据源 数组、数组列表、游标……
列表项模板 平台资源、用户自定义

列表视图四要素:列表控件、适配器、列表项模板和数据源

4、四种常用适配器

  • 列表视图(ListView),它是AdapterView的孙子类,要通过适配器作为梁桥来绑定数据源
适配器 含义
ArrayAdapter 数组适配器
SimpleAdapter 简单适配器
SimpleCursorAdapter 简单游标适配器
BaseAdapter 基适配器

(二)数组适配器

1、数组适配器API文档

2、数据适配器继承关系图

3、数组适配器构造方法

(三)数组适配器案例 - 阅读古诗

1、创建安卓应用

单击【Finish】按钮

2、准备图片素材

3、字符串资源文件

<resources><string name="app_name">阅读古诗</string><string name="back">返回古诗目录</string><string-array name="titles"><item>静夜思</item><item>登鹳雀楼</item><item>相思</item><item>听弹琴</item><item>登乐游原</item><item>朝发白帝城</item><item>巴山夜雨</item><item>渭城曲</item><item>春夜喜雨</item><item>离离原上草</item><item>示儿</item></string-array><string-array name="authors"><item>唐·李白</item><item>唐·王之涣</item><item>唐·王维</item><item>唐·刘长卿</item><item>唐·李商隐</item><item>唐·李白</item><item>唐·杜牧</item><item>唐·王维</item><item>唐·杜甫</item><item>唐·白居易</item><item>宋·陆游</item></string-array><string-array name="contents"><item>床前明月光,\n疑是地上霜。\n举头望明月,\n低头思故乡。</item><item>白日依山尽,\n黄河入海流。\n欲穷千里目,\n更上一层楼。</item><item>红豆生南国,\n春来发几枝。\n愿君多采撷,\n此物最相思。</item><item>泠泠七弦上,\n静听松风寒。\n古调虽自爱,\n今人多不弹。</item><item>向晚意不适,\n驱车登古原。\n夕阳无限好,\n只是近黄昏。</item><item>朝辞白帝彩云间,\n千里江陵一日还。\n两岸猿声啼不住,\n轻舟已过万重山。</item><item>君问归期未有期,\n巴山夜雨涨秋池。\n何当共剪西窗烛,\n却话巴山夜雨时。</item><item>渭城朝雨浥轻尘,\n客舍青青柳色新。\n劝君更尽一杯酒,\n西出阳关无故人。</item><item>好雨知时节,当春乃发生。\n随风潜入夜,润物细无声。\n野径云俱黑,江船火独明。\n晓看红湿处,花重锦官城。</item><item>离离原上草,一岁一枯荣。\n野火烧不尽,春风吹又生。\n远芳侵古道,晴翠接荒城。\n又送王孙去,萋萋满别情。</item><item>死去元知万事空,\n但悲不见九州同。\n王师北定中原日,\n家祭无忘告乃翁。 </item></string-array>
</resources>

4、主布局资源文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/background"android:padding="15dp"tools:context=".MainActivity"><ListViewandroid:id="@+id/lv_poem_title"android:layout_width="match_parent"android:layout_height="wrap_content" />
</LinearLayout>

5、创建诗歌列表项模板

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tv_poem_title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:minHeight="80dp"
    android:textColor="#0000ff"
    android:textSize="25sp" />

6、主界面类实现功能

  • 主界面类 - MainActivity

初始化古诗标题数组,作为列表控件的数据源

创建数组适配器,作为连接列表控件与数据源的桥梁

查看平台布局资源文件simple_list_item_1

给列表控件设置适配器

package net.hw.read_ancient_poetry;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends AppCompatActivity {

private ListView lvPoemTitle; // 诗歌标题列表控件 - 展示
    private ArrayAdapter<String> adapter; // 数组适配器 - 桥梁
    private String[] titles; // 诗歌标题数组 - 数据源

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 利用布局资源文件设置用户界面
        setContentView(R.layout.activity_main);

// 通过资源标识符获取控件实例
        lvPoemTitle = findViewById(R.id.lv_poem_title);

// 初始化古诗标题数组,作为列表控件的数据源
        titles = getResources().getStringArray(R.array.titles);
        // 给古诗标题填上序号
        for (int i = 0;  i < titles.length; i++) {
            titles[i] = (i + 1) + ". " + titles[i];
        }

// 创建数组适配器,作为连接列表控件与数据源的桥梁
        adapter = new ArrayAdapter<>(
                this, // 上下文 - 当前窗口
                android.R.layout.simple_list_item_1, // 列表项模板 - 平台布局资源
                titles // 数据源 - 字符串数据组
        );

// 给列表控件设置适配器
        lvPoemTitle.setAdapter(adapter);
    }
}

7、启动应用,查看效果

  • 采用平台资源中的列表项模板得到的效果

安卓编程基础——列表相关推荐

  1. 安卓编程基础——触摸事件

    文章目录 前言 一.安卓事件触摸概述 1.触摸分类 2.触摸动作 3.触摸监听器 4.触摸方法 5.触点个数与坐标 6.安卓触摸事件处理机制 二.使用步骤讲解 1.创建安卓应用 3.字符串资源文件 4 ...

  2. 安卓编程基础——手势编程

    目录 前言 (一)安卓手势操作原理 (二)安卓手势类与接口 二.利用手势切换图片 1.创建安卓应用 3.字符串资源文件 4.主布局资源文件 5.主界面类实现功能 6.启动应用,查看效果 总结 前言 现 ...

  3. 安卓编程基础——标签

    目录 前言 (一)继承关系图 (二)标签常用属性 (三)教学案例:标签演示 1.创建安卓应用 2.字符串资源文件 3.自定义边框配置文件 4.主布局资源文件 5.主界面类实现功能 6.启动应用,查看效 ...

  4. 安卓编程基础——网格布局

    目录 前言 一.新课讲解 (一)网格布局概述 1.布局特点 2.继承关系图 3.常用属性 (二)案例演示:计算器界面 1.创建安卓应用 2.准备背景图片 3.字符串资源文件 4.自定义边框配置文件 5 ...

  5. Python编程基础—列表

    1.索引 字符串str.列表list.元组tuple都属于序列.序列中元素是有序的,每个元素都有序号,这个序号称为索引.索引的方向不同可分为正负.索引序号采用方括号[ ],里面参数类似C语言下标,也就 ...

  6. 安卓编程基础——菜单

    前言:学习目标 知道三种菜单使用场景 能够正确使用三种菜单 一.新课讲解 菜单在安卓应用程序中占有比较重要的位置.原生安卓提供了三种类型的菜单:选项菜单(OptionsMenu).上下文菜单(Cont ...

  7. 没有编程基础如何做安卓开发,试试这款简单易学的中文开发编程工具!

    对于没有java编程基础的人来说,想要开发自己的安卓app可能很难. 我们都知道,现在流行的编程工具都是外国人开发的.全英文的界面,再加上全程使英文来写代码,让很多初学者望而却步.绝大部分人选择花费一 ...

  8. MFC界面编程基础(13):列表框和组合框

    上一篇:MFC界面编程基础(12):组框.单选按钮和复选框 下一篇:MFC界面编程基础(14):滚动条 列表框和组合框 列表框是CListBox类的对象,组合框是CComboBox的对象. 列表框 属 ...

  9. java面向对象编程基础

    java面向对象编程基础 前言:什么是java 是咖啡飘香的清晨 - 是斯坦福校园意浓情深 - 是James的思想睿智 是剁手党双十一挥舞的利刃 是大数据云计算驰骋的平台 - 是ATM上吐出的钞票 - ...

最新文章

  1. VirtualBox - RTR3InitEx failed with rc=-1912 (rc=-1912)
  2. js正则验证手机号码有效性
  3. http php mysql_apache+php+mysql
  4. 聚类分析matlab检验,「matlab聚类分析」聚类分析的Matlab 程序—系统聚类(附有案例分析) - 金橙教程网...
  5. 【Java】 5.6 类的继承
  6. 逆转线性单链表 c语言,单链表的逆转,不会做啊
  7. pywinauto二次封装(pywinnat.py)
  8. oracle 月累计,oracle 可有什么方法 统计每月累积购买人数?
  9. MTK 驱动(71)---DDR进行bitflip压力测试
  10. enable pen pressure in ps
  11. 编程趣谈_k++_++k_k一行顺序输出,结果会有差异吗?
  12. 用yolov5训练kitti数据集
  13. 在win7中chm打不开的方法
  14. 余压监控系统在高层住宅楼的应用
  15. 《AngularJS深度剖析与最佳实践》一2.11 消息
  16. vns基本的变邻域搜索算法
  17. mysql导入数据出现--unknown command '\'
  18. 计算机专业怎样才能晋级正高级
  19. git reset中hard与soft区别
  20. ueditor 配置window.UEDITOR_HOME_URL路径不起作用,提示引用不到该路径,引用的确是另一个项目路径

热门文章

  1. 中国首个“芯片大学”即将落地;生成对抗网络(GAN)的数学原理全解
  2. 矩形中分出正方形,递归优化
  3. 解决height:100vh超出屏幕高度的问题
  4. 大龄Android 开发们最担忧的事儿,太难了~
  5. 小学是否有计算机专业,小学计算机教学计划
  6. OWASP的s-sdlc项目优秀分享
  7. JAVA day06:代码作业(封装)
  8. 理解HTTP Referer
  9. 不用找,你想要的廊ps后期素材素材都在这里
  10. 打破校史!「双非」高校,首发 Science