




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1a97e78d47009a4ae9367813e1a9fbe7.pdf列表详解列表的显示需要三个元素:1ListVeiw,用来展示列表的View。2适配器,用来把数据映射到ListView 上的中介。3数据,具体的将被映射的字符串、图片、或者基本组件。知识点:1. ListView,是Android中比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。2. Adapter:Android中的Adapter可以这样理解,它是数据List和视图ListView之间的桥梁,数据在Adapter中做处理,然后显示到视图上面来。Adapter有很多种。列表的适配器分为三种类型:ArrayAdapter,SimpleAdapter和SimpleCursorAdapter。l ArrayAdapter最为简单,只能展示一行字。l SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方便地把数据库的内容以列表的形式展示出来。l SimpleAdapter有最好的扩充性,可以自定义出各种效果。3. List:l 所有的List中只能容纳单个不同类型的对象组成的表,而不是KeyValue键值对。例如: tom,1,c ,List中取出的都是Object对象。l 所有的List中可以有相同的元素,例如Vector中可以有 tom,koo,too,koo 。l 所有的List中可以有null元素,例如 tom,null,1 。l 基于Array的List(Vector,ArrayList)适合查询。l List基本上都是以Array为基础。 ListView使用的例子如下图:一、最简单的ListView1. package com.demo;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 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. data.add(测试数据1);20. data.add(测试数据2);21. data.add(测试数据3);22. data.add(测试数据4); 23. return data;24. 25. 上面代码第14行,使用了ArrayAdapter()来装配数据,要装配这些数据就需要连接ListView 视图对象和数组的适配器来适配工作。l ArrayAdapter 的构造需要三个参数,依次为this,布局文件(注意这里的布局文件描述的是列表的每一行的布局,android.R.layout.simple_list_item_1 是android系统定义好的布局),数据源(一个List 集合)。同时用setAdapter()完成适配的最后工作。l android.R.layout.simple_list_item_1,每一项只有一个TextView.l android.R.layout.simple_list_item_2,每一项有2个TextView.l android.R.layout.simple_list_item_single_choice,每一项有一个TextView,但是这一项可以被选择。l List和ArrayList的区别List是一个接口,而ListArray是一个类,ListArray继承并实现了List。 所以List不能被构造,但可以向上面那样为List创建一个引用,而ListArray就可以被构造。 List list; /正确 list=null; List list=new List(); / 是错误的用法List list = new ArrayList();这句创建了一个ArrayList的对象后上溯到了List。此时它是一个List对象了。 而ArrayList list=new ArrayList(); 创建一对象,保留了ArrayList的所有属性。 如果这个样子: List a=new ArrayList(); 则a拥有List与ArrayList的所有属性和方法,不会减少。问题的关键: 为什么要用 List list = new ArrayList(),而不用 ArrayList alist = new ArrayList()呢?问题就在于List有多个实现类,现在你用的是ArrayList,也许哪一天你需要换成其它的实现类,如 LinkedList或者Vector等等,这时你只要改变这一行就行了: List list = new LinkedList(); 其它使用了list地方的代码根本不需要改动。 假设你开始用 ArrayList alist = new ArrayList(), 这下你有的改了,特别是如果你使用了 ArrayList特有的方法和属性。 二、显示电话簿的联系人下面的程序是从电话簿中把联系人显示到类表中。先在通讯录中添加一个联系人作为数据库的数据。然后获得一个指向数据库的Cursor ,并且定义一个布局文件(也可以使用系统自带的)。运行后效果如下图:package com.demo;import android.app.Activity;import android.database.Cursor;import android.os.Bundle;import vider.Contacts.People;import android.widget.ListAdapter;import android.widget.ListView;import android.widget.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, 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);l SimpleCursorAdapter 可以方便地把从游标得到的数据进行列表显示,并可以把指定的列映射到对应的TextView 中。l Cursor cursor = getContentResolver().query(People.CONTENT_URI,null,null,null,null); 先获得一个指向通讯录数据库的Cursor 对象。l startManagingCursor(cursor); 将获得的Cursor 对象交由Activity 管理,这样Cursor 的生命周期和Activity 便能够自动同步,省去自己手动管理Cursor。l SimpleCursorAdapter 构造函数前面3 个参数和ArrayAdapter是一样的,最后两个参数:一个包含数据库列的String 型数组,一个包含布局文件中对应组件id 的 int 型数组。其作用是自动的将String 型数组所表示的每一列数据映射到布局文件对应id 的组件上。l 上面的代码,将NAME 列的数据一次映射到布局文件的id 为text1的组件上。注意:需要在AndroidManifest.xml 中如权限:三、带图片的列表: 定制布局l SimpleAdaptersimpleAdapter 的扩展性最好,可以定义各种各样的布局出来,可以放上ImageView(图片),还可以放上Button(按 钮),CheckBox(复选框)等等。下面的代码都直接继承了ListActivity,ListActivity和普通的Activity 没有太大的 差别,不同就是对显示ListView 做了许多优化,方面显示而已。下面的程序是实现一个带有图片的类表。首先需要定义好一个用来显示每一个列内容的xmlvlist3.xmlpackage com.demo;import java.util.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(savedInstanceState);SimpleAdapter adapter = new SimpleAdapter(this,getData(),R.layout.vlis3t,new Stringtitle,info,img,new intR.id.title,R.,R.id.img);setListAdapter(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);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一个SimpleAdapter,参数依次是:this,布局文件(vlist.xml),HashMap的 title 和 info,img。布局文件的组件id,title,info,img。布局文件的各组件分别映射到HashMap 的各元素上,完成适配。四、没有数据的ListView但是有时候,列表还没有数据可以显示,需要我们用一句提示的语言来告诉用户老, 运行效果如下图:布局文件vlist4.xml如下:程序 MyListView4.java如下:package com.demo; import
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年陕西省事业单位教师招聘政治学科专业知识试卷(全真模拟试题)
- 2025年全国翻译专业资格(水平)考试印地语二级口译试卷
- 河北传媒学院《商业智能与财会决策支持》2024-2025学年第一学期期末试卷
- 四川华新现代职业学院《智能审计实操》2024-2025学年第一学期期末试卷
- 2025年高级工职业技能鉴定试题库灌溉工程管理模块分析
- 2025年水利工程建设与管理高级专题解析及模拟题集
- 2025年炼钢行业顶尖人才选拔秘籍高级面试题解析与应对技巧
- 南昌影视传播职业学院《美育学》2024-2025学年第一学期期末试卷
- 苏州农业职业技术学院《数字界面设计》2024-2025学年第一学期期末试卷
- 2025年财务会计招聘面试模拟题详解与技巧
- 合同第三方见证人范本
- 分包招采培训课件
- 公司全员销售管理办法
- 实验室生物安全知识培训考试试题(含答案)
- 考试真题及答案解析注册安全工程师
- 2025年中国收音机行业市场动态分析、发展方向及投资前景分析报告
- DB14∕T 1957-2025 药品现代物流基本要求
- 房颤的诊断与治疗
- 电缆制作流程
- 中国氯丁橡胶市场调研及发展策略研究报告2025-2028版
- 丙酮出入库管理制度
评论
0/150
提交评论