2022年Android教学ListView详解[参 .pdf

上传人:Che****ry 文档编号:27250471 上传时间:2022-07-23 格式:PDF 页数:7 大小:202.98KB
返回 下载 相关 举报
2022年Android教学ListView详解[参 .pdf_第1页
第1页 / 共7页
2022年Android教学ListView详解[参 .pdf_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《2022年Android教学ListView详解[参 .pdf》由会员分享,可在线阅读,更多相关《2022年Android教学ListView详解[参 .pdf(7页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、134752373.doc 第 1 页 共 7 页列表详解列表的显示需要三个元素:1ListVeiw,用来展示列表的View 。2适配器,用来把数据映射到ListView 上的中介。3数据,具体的将被映射的字符串、图片、或者基本组件。知识点:1.ListView ,是Android 中比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。2.Adapter:Android 中的 Adapter 可以这样理解,它是数据List 和视图 ListView 之间的桥梁,数据在 Adapter 中做处理,然后显示到视图上面来。Adapter 有很多种。列表的适配器分为三种类型:

2、ArrayAdapter ,SimpleAdapter 和 SimpleCursorAdapter 。ArrayAdapter 最为简单,只能展示一行字。SimpleCursorAdapter 可以认为是SimpleAdapter 对数据库的简单结合,可以方便地把数据库的内容以列表的形式展示出来。SimpleAdapter 有最好的扩充性,可以自定义出各种效果。3.List:所有的List 中只能容纳单个不同类型的对象组成的表,而不是Key Value 键值对。例如: tom,1,c ,List 中取出的都是Object 对象。所有的 List 中可以有相同的元素,例如Vector 中可以有

3、tom,koo,too,koo 。所有的 List 中可以有null 元素,例如 tom,null,1 。基于 Array 的 List( Vector,ArrayList )适合查询。List 基本上都是以Array 为基础。ListView 使用的例子如下图:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - 134752373.doc 第 2 页 共 7 页一、最简单的ListView 1.package com.demo;

4、2.import java.util.ArrayList; 3.import java.util.List; 4.import android.app.Activity; 5.import android.os.Bundle; 6.import android.widget.ArrayAdapter; 7.import android.widget.ListView;8.public class MyListView extends Activity 9.private ListView listView ; 10.Override11.public void onCreate(Bundle

5、savedInstanceState) 12.super.onCreate(savedInstanceState); 13.listView = new ListView( this); 14.listView .setAdapter(new ArrayAdapter( this , android.R.layout. simple_expandable_list_item_1 ,getData(); 15.setContentView( listView ); 16. 17.private List getData() 18.List data = new ArrayList();19.da

6、ta.add(测试数据 1); 20.data.add(测试数据 2); 21.data.add(测试数据 3); 22.data.add(测试数据 4); 23.return data; 24. 25. 上面代码第14 行,使用了ArrayAdapter() 来装配数据,要装配这些数据就需要连接ListView 视图对象和数组的适配器来适配工作。ArrayAdapter 的构造需要三个参数,依次为this,布局文件(注意这里的布局文件描述的是列表的每一行的布局,android.R.layout.simple_list_item_1 是 android 系统定义好的布局) , 数据源 (一个

7、List 集合 )。同时用 setAdapter()完成适配的最后工作。android.R.layout.simple_list_item_1 ,每一项只有一个TextView. android.R.layout.simple_list_item_2 ,每一项有2 个 TextView. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - 134752373.doc 第 3 页 共 7 页android.R.layout.simpl

8、e_list_item_single_choice,每一项有一个TextView,但是这一项可以被选择。List 和 ArrayList 的区别List 是一个接口,而ListArray 是一个类, ListArray 继承并实现了List。所以 List 不能被构造,但可以向上面那样为List 创建一个引用,而ListArray 就可以被构造。List list; /正确list=null; List list=new List(); / 是错误的用法List list = new ArrayList();这句创建了一个ArrayList 的对象后上溯到了List。此时它是一个List 对象

9、了。而 ArrayList list=new ArrayList(); 创建一对象,保留了ArrayList 的所有属性。如果这个样子:List a=new ArrayList(); 则 a 拥有 List 与 ArrayList 的所有属性和方法,不会减少。问题的关键 : 为什么要用List list = new ArrayList(),而不用ArrayList alist = new ArrayList()呢?问题就在于List 有多个实现类,现在你用的是ArrayList ,也许哪一天你需要换成其它的实现类,如LinkedList 或者 Vector 等等,这时你只要改变这一行就行了:L

10、ist list = new LinkedList(); 其它使用了list 地方的代码根本不需要改动。假设你开始用ArrayList alist = new ArrayList(), 这下你有的改了,特别是如果你使用了ArrayList 特有的方法和属性。二、显示电话簿的联系人下面的程序是从电话簿中把联系人显示到类表中。先在通讯录中添加一个联系人作为数据库的数据。然后获得一个指向数据库的Cursor ,并且定义一个布局文件(也可以使用系统自带的)。运行后效果如下图:package com.demo;import android.app.Activity; import android.dat

11、abase.Cursor; import android.os.Bundle; import android.provider.Contacts.People; import android.widget.ListAdapter; import android.widget.ListView;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - 134752373.doc 第 4 页 共 7 页import android.widge

12、t.SimpleCursorAdapter; public class MyListView2 extends Activity private ListView listView ; Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); listView = new ListView( this); Cursor cursor = getContentResolver().query(People.CONTENT_URI , null , null , null

13、, null ); startManagingCursor(cursor); ListAdapter listAdapter = new SimpleCursorAdapter( this, android.R.layout. simple_expandable_list_item_1 , cursor, new String People. NAME , new int android.R.id.text1 ); listView .setAdapter(listAdapter); setContentView( listView ); SimpleCursorAdapter 可以方便地把从

14、游标得到的数据进行列表显示,并可以把指定的列映射到对应的 TextView 中。Cursor cursor = getContentResolver().query(People.CONTENT_URI,null,null,null,null); 先获得一个指向通讯录数据库的Cursor 对象。startManagingCursor(cursor); 将获得的Cursor 对象交由Activity 管理,这样Cursor 的生命周期和 Activity 便能够自动同步,省去自己手动管理Cursor。SimpleCursorAdapter 构造函数前面3 个参数和ArrayAdapter 是一样

15、的,最后两个参数:一个包含数据库列的String 型数组, 一个包含 布局文件中对应组件id 的int 型数 组。其作用是自动的将String 型数组所表示的每一列数据映射到布局文件对应id 的组件上 。上面的代码,将NAME 列的数据一次映射到布局文件的id 为 text1 的组件上。注意:需要在AndroidManifest.xml 中如权限: 三、带图片的列表: 定制布局SimpleAdapter simpleAdapter 的扩展性最好,可以定义各种各样的布局出来,可以放上ImageView(图片),还可以放上 Button(按钮) ,CheckBox(复选框)等等。下面的代码都直接继

16、承了ListActivity ,ListActivity和普通的 Activity 没有太大的差别,不同就是对显示ListView 做了许多优化,方面显示而已。下面的程序是实现一个带有图片的类表。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 7 页 - - - - - - - - - 134752373.doc 第 5 页 共 7 页首先需要定义好一个用来显示每一个列内容的xml vlist3.xml package com.demo;import java.util.

17、ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.ListActivity; import android.os.Bundle; import android.widget.SimpleAdapter; public class MyListView3 extends ListActivity Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(saved

18、InstanceState); SimpleAdapter adapter = new SimpleAdapter( this,getData(),R.layout. vlis3t , new String title ,info ,img , 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 7 页 - - - - - - - - - 134752373.doc 第 6 页 共 7 页new intR.id. title ,R.id.info,R.id. img); se

19、tListAdapter(adapter); private ListMap getData() ListMap list = new ArrayListMap(); Map map = new HashMap();map.put(title , G1); map.put(info , google 1 ); map.put(img , R.drawable. i1 ); list.add(map); map = new HashMap();map.put(title , G2); map.put(info , google 2 ); map.put(img , R.drawable. i2

20、); list.add(map); map = new HashMap();map.put(title , G3); map.put(info , google 3 ); map.put(img , R.drawable. i3 ); list.add(map); return list; 使用SimpleAdapter的数据用一般都是HashMap 构成的 List , list 的每一节对应ListView 的每一行。HashMap 的每个键值数据映射到布局文件中对应id 的组件上。因为系统没有对应的布局文件可用,我们可以自己定义一个布局vlist3.xml 。下面做适配, new 一个

21、SimpleAdapter,参数依次是:this,布局文件( vlist.xml ) , HashMap 的title 和info,img。布局文件的组件id,title ,info ,img。布局文件的各组件分别映射到HashMap 的各元素上,完成适配。四、没有数据的ListView 但是有时候,列表还没有数据可以显示,需要我们用一句提示的语言来告诉用户老,运行效果如下图:布局文件 vlist4.xml如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 7 页 -

22、- - - - - - - - 134752373.doc 第 7 页 共 7 页 程序 MyListView4.java如下:package com.demo; import android.app.ListActivity; import android.os.Bundle; import android.view.View;import android.widget.ArrayAdapter; import android.widget.ListView; public class MyListView4 extends ListActivity private String data

23、=; public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout. vlist4 ); setListAdapter( new ArrayAdapter(this, android.R.layout. simple_list_item_1 , data); protected void onListItemClick(ListView listView, View v, int position, long id) super.onListItemClick(listView, v, position, id);setTitle(listView.getItemAtPosition(position).toString(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com