guizhongyun 2011-09-27
Android 提供的ListView默认只有简单的一列,而我在程序开发中,经常会遇到的问题是,希望ListView能尽量多展示一些信息给我们的用户。所以,需要为ListView去自定义布局,例如,分为多列显示,即生成一张数据表,这些在使用数据库的时候是很有必要的。
当我们使用数据库时,通过查询,返回一个cursor对象,它指向了符合条件的第一条数据,我们可以利用Cursor来生成一个SimpleCursoradapter对象,它的构造器参数有(context c,Cursor cursor,int id,int[ ] from ,int[ ] to); 一个adapter(适配器)决定了ListView展示的信息,包括了它的布局,决定ListView以何种形式展现的参数就是 id ,from,to这3个参数,前者提供了布局文件的位置,from 给出了需要从cursor中取出的字段(文本),to则指向了地址为id的布局文件中的TextView组建序列,这样,ListView一条记录的布局,就是XML文件中定义好的布局,每一个字段的风格,可在XML中的TextView去定义了。
并且,我们可以看到,simpleCursorAdapter继承自simpleadapter,这个父类也包含了自定义的功能,它的构造器包含的参数有(context c,List<?> list,int id ,int [ ] from,int [ ] to);显然它的用法和子类是类似的,唯一的不同是数据源的不同,即它的数据来自一个list<HashMap<>>(),此list对象和cursor是比较类似的,我们将在HashMap中去产生一些键值对,并且每一个HashMap中都包含一条类似数据库的记录,同时,外围的List持有了这些记录,这样这个adapter的用法就确定好了,接下来给出一段代码,即上述
adapter的范例。