首页 > 代码库 > 第十九讲:ListView与Adapter(一)
第十九讲:ListView与Adapter(一)
天将降大任于是人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为。——《孟子·告子下》
本讲内容:ListView列表组件 与 Adapter适配器的用法
一、ListView列表组件:
作用:ListView通常有两个职责。
(1)将数据填充到布局。
(2)处理用户的选择点击等操作(通过绑定监听器)。
创建一个ListView需要3个元素。
(1)ListView展示每一列的View。
(2)填入View的数据或者图片等。
(3)连接数据与ListView的适配器。
ListView的使用步骤:
(1)定义一个data
(2)创建一个Adapter对象
二、Adapter适配器:
什么是Adapter适配器?适配器就是一个连接数据和AdapterView(ListView就是一个典型的AdapterView,前面我们学过的Spinner也是)的桥梁,通过它能有效地实现数据与AdapterView的分离设置,使AdapterView与数据的绑定更加简便,修改更加方便。Android中提供了很多的Adapter,各种Adapter转换的方式和能力不一样,下面介绍常用的几个。
Adapter | 作用 |
ArrayAdapter<C> | 用来绑定一个数组,支持泛型操作 |
SimpleAdapter | 用来绑定在xml中定义的控件对应的数据 |
SimpleCursorAdapter | 用来绑定游标得到的数据 |
BaseAdapter | 通用的基础适配器 |
我们通过下面例子感受一下,代码的讲解都写在注释里了。
三、 ListView使用ArrayAdapter
用ArrayAdapter可以实现简单的ListView的数据绑定。默认情况下,ArrayAdapter绑定每个对象的toString值到layout中预先定义的TextView控件上。ArrayAdapter的使用非常简单。
下面是res/layout/activity_main.xml 布局文件:
<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:orientation="vertical" tools:context="com.example.text.MainActivity$PlaceholderFragment" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="零基础学Android" android:gravity="center" android:textSize="30sp" android:textColor="#ff00ff"/> <ListView android:id="@+id/listViewId" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout>
下面是MainActivity.java主界面文件:
public class MainActivity extends Activity { private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView) findViewById(R.id.listViewId); // 定义数组 String[] data = http://www.mamicode.com/{ "零基础学Android 第一讲", "零基础学Android 第二讲",>ArrayAdapter<CharSequence>,具有三个参数:
第一个是conetxt,也就是application的环境,可以设置为this,也可以通过getContext()获取.
第二个参数是ListView未展开的UI格式 ,注意是Android系统内自定义的(我们也可以自定义ListView的UI格式)
第三个参数是从data source中的array ID也可以自定义的data
通常我们使用Android提供的资源,除了例子中所用的,常用的还有如下几种,可实现带RadioButton和CheckBox的ListView。
一般 android.R.layout.simple_list_item_1
(1)通过指定android.R.layout.simple_list_item_checked这个资源,实现带选择框的ListView。
需要用setChoiceMode()方法设定选择为多选还是单选,否则将不能实现选择效果
(2)通过指定android.R.layout.simple_list_item_multiple_choice这个资源实现带CheckBox的ListView。
同样的,需要用setChoiceMode()方法来设置单选或者多选
(3)通过指定android.R.layout.simple_list_item_single_choice这个资源实现带RadioButton的ListView。这里要注意的是,
这里并不是指定了单选。是多选还是单选要通过setChoiceMode()方法来指定
下面是运行结果:
本讲到这里,谢谢大家!
第十九讲:ListView与Adapter(一)