Android组件ListView|青训营笔记

145 阅读3分钟

这是我参与【第四届青训营】笔记创作活动的第六天

一、什么是ListView

–ListView 控件是 Android 操作系统为我们提供的一种列表显示的控件。它以列表的形式展示具体数据内容,并且能够根据数据的长度自适应屏幕显示。

–ListView 控件允许用户通过上下滑动来将屏幕外的数据滚动到屏幕内,同时将屏幕内原有的数据滚动出屏幕,从而显示更多的数据内容。

二、ListView使用场景

image-20220809211753010

三、ListView的用法

ListView 控件是 Android 开发过程中最常用的控件之一,它的使用可以分为如下步骤:

1、UI布局设计

<LinearLayout >
    <ImageView
        android:id="@+id/item_img"
        app:srcCompat="@mipmap/ic_launcher" />
    <TextView
        android:id="@+id/item_name"
        android:text="TextView" />
</LinearLayout>

2 、使用适配器显示数据

//显示ListView
 //1.获取ListView
 myListView = findViewById(R.id.myListView);
//2.创建适配器对象
myAdapter = new ArrayAdapter<String>
(MainActivity.this, android.R.layout.simple_list_item_1,books);
//3.加载适配器
myListView.setAdapter(myAdapter);
​

–在使用ListView时需要对其进行数据适配。为了实现这个功能,Android系统提供一系列的适配器(Adapter)对ListView进行数据适配。

–适配器就像显示器,把复杂的数据按人们易于接受的方式来展示。

BaseAdapter:•即基本的适配器。它实际上就是一个抽象类,该类拥有四个抽象方法。根据这几个抽象方法来对ListView进行数据适配

SimpleAdapter:•SimpleAdapter继承自BaseAdapter,实现了BaseAdapter的四个抽象方法,分别是getCount()、getItem()、getItemId()、getView()方法。

ArrayAdapter:•ArrayAdapter也继承自BaseAdapter,与SimpleAdapter相同。ArrayAdapter通常用于适配TextView控件,例如Android系统中的设置菜单(Setting)。

四、案例:使用 ListView 控件开发通讯录

需求描述:设计一个通讯录App,以列表的方式展示通讯录

技术要点:ListView控件和ArrayAdapter的使用。

步骤描述:

①在布局文件中添加ListView控件及设置一行数据的布局文件

1.主布局文件中加入ListView控件,作为存放数据的一个容器。

2.列表每行内容布局采用R.layout.simple_list_item_1布局(Android系统默认的一个简单布局文件),该布局文件仅包含一个文本。

②初始化联系人数据,将联系人数据存储在一个数组中

1.初始化联系人数据,将联系人数据存储在一个数组中。

2.使用ArrayAdapter适配联系人数据。

③在ListView控件中显示通讯录。

③使用ArrayAdapter适配联系人数据

④在ListView控件中显示通讯录

五、BaseAdapter介绍

–BaseAdapter是使用得比较多,适用于ListView、GridView、Spinner等控件适配器,通过重写getView方法,展示自定义视图。

–BaseAdater的四个抽象方法:getItem(int),getItemId(int),getCount(),getView(int,View,ViewGroup)

–getView()方法返回我们任意想要的布局类型,是 4 个方法中最重要的方法。在实际开发过程中,我们还会使用到 convertView、ViewHolder 来优化 ListView,以提升用户的体验。

在使用 BaseAdater 时,我们需要自定义一个适配器类。该类继承 BaseAdater,并且需要重写 BaseAdater 的 4 个抽象方法:getItem()、getItemId()、getCount()、getView()。

① 通过调用 getCount() 获取 ListView 的长度(item 的个数)。

②通过调用getView() ,根据 ListView 的长度逐一绘制 ListView 的每一行。

③通过 getItem() getItemId() 来获取 Adapter 中的数据。

④结合convertView,ViewHolder来提升ListView的运行效率

六、ListView的常用Listener

–我们在前文已经接触过 Listener,例如按钮的监听事件。ListView 控件同样拥有 Listener,它们可以响应用户的各种操作(例如单击、长按某个条目、滚动等)。