安卓编程基础——列表

零、本讲学习目标

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

一、导入新课

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

二、新课讲解

(一)列表视图概述

1、继承关系图

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

2、列表视图API文档

  • ListView  |  Android Developers

安卓编程基础——列表_第1张图片

 

3、列表视图四要素

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

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

4、四种常用适配器

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

(二)数组适配器

1、数组适配器API文档

  • ArrayAdapter  |  Android Developers

安卓编程基础——列表_第2张图片

 

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

  • ArrayAdapter类继承了BaseAdapter类

安卓编程基础——列表_第3张图片

 

3、数组适配器构造方法

  • 数组适配器提供了6个重载的构造方法

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

1、创建安卓应用

  • 基于Empty Activity模板创建安卓应用 - ReadAncientPoetry

   单击【Finish】按钮

2、准备图片素材

  • 将背景图片拷贝到drawable目录

3、字符串资源文件

  • 字符串资源文件 - strings.xml

    阅读古诗
    返回古诗目录

    
        静夜思
        登鹳雀楼
        相思
        听弹琴
        登乐游原
        朝发白帝城
        巴山夜雨
        渭城曲
        春夜喜雨
        离离原上草
        示儿
    

    
        唐·李白
        唐·王之涣
        唐·王维
        唐·刘长卿
        唐·李商隐
        唐·李白
        唐·杜牧
        唐·王维
        唐·杜甫
        唐·白居易
        宋·陆游
    

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

4、主布局资源文件

  • 主布局资源文件 - activity_main.xml



    

5、创建诗歌列表项模板

  • 诗歌列表项模板 - poem_list_item.xml


    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

安卓编程基础——列表_第4张图片

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

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

安卓编程基础——列表_第5张图片

 查看平台布局资源文件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 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、启动应用,查看效果

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

 

你可能感兴趣的:(android,1024程序员节,android,studio)