这是我参与【第四届青训营】笔记创作活动的第六天
一、什么是ListView
–ListView 控件是 Android 操作系统为我们提供的一种列表显示的控件。它以列表的形式展示具体数据内容,并且能够根据数据的长度自适应屏幕显示。
–ListView 控件允许用户通过上下滑动来将屏幕外的数据滚动到屏幕内,同时将屏幕内原有的数据滚动出屏幕,从而显示更多的数据内容。
二、ListView使用场景
三、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,它们可以响应用户的各种操作(例如单击、长按某个条目、滚动等)。