listview适配器与加载过程详解

简介:

android开发中Listview是一个很重要的组件,它以列表的形式根据数据的长自适应展示具体内容。

Listview由以下三个元素组成:

Ø  View:用来展示列表,通常是一个xml所指定的。

Ø  适配器:把不同的数据映射到view上,不同的数据对应不同的适配器,如ArrayDdapter,CursorAdapter,SimpleAdapter等,他们能偶将数组,指针指向的数据,Map等数据映射到View上。

通过listviiewsetadapter方法可以设置其适配器

 public void setAdapter (ListAdapter adapter)

setAdapter方法的参数是ListAdapter,适配器可以为以下八种类型:

ArrayAdapter<T>, BaseAdapterCursorAdapterSimpleAdapter,  HeaderViewListAdapterResourceCursorAdapterSimpleCursorAdapterWrapperListAdapter 

ArrayAdapter最为简单,只能展示一行字。

SimpleAdapter有最好的扩充性,可以自定义出各种效果。

SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方便的把数据库的内容以类表的形式展示出来。

以上三种适配器都继承自BaseAdapter,继承BaseAdapter之后,需要重写以下四个方法:getCount,getItem,getItemId,getView

Ø  数据:具体的将被映射的数据和资源,如字符串,图片,基本组件等,通过适配器,这些数据将会被显示到ListView.所有的数据和资源要显示到ListView上都通过适配器来完成。

ListView绘制的过程:

首先,系统在绘制ListView之前,将会先调用getCount方法来获取Item的个数。之后每绘制一个 Item就会调用一次getView方法,在此方法内就可以引用事先定义好的xml来确定显示的效果并返回一个View对象作为一个Item显示出来。也正是在这个过程中完成了适配器的主要转换功能,把数据和资源以开发者想要的效果显示出来。也正是getView的重复调用,使得ListView的使用更 为简单和灵活。这两个方法是自定ListView显示效果中最为重要的,同时只要重写好了就两个方法,ListView就能完全按开发者的要求显示。而 getItemgetItemId方法将会在调用ListView的响应方法的时候被调用到。所以要保证ListView的各个方法有效的话,这两个方 法也得重写。比如:没有完成getItemId方法的功能实现的话,当调用ListViewgetItemIdAtPosition方法时将会得不到想 要的结果,因为该方法就是调用了对应的适配器的getItemId方法。



本文转自HDDevTeam 51CTO博客,原文链接:http://blog.51cto.com/hddev/645467,如需转载请自行联系原作者

相关文章
|
Android开发 开发者 存储
Android可折叠收缩伸展的Expandable分组RecyclerView:模型抽象和封装(二)
Android可折叠收缩伸展的Expandable分组RecyclerView:模型抽象和封装(二) 如今Android这种可收缩伸展的Expandable RecyclerView是如此常用,在附录1的基础上,我重新把模型进行了抽象和封装,设计了一套新的架构和简洁的使用方式支持这种功能。
3818 0
|
8月前
|
Java Android开发
Activity的加载过程
Activity的加载过程
37 1
|
Android开发
Android RecyclerView对应的适配器中方法的执行顺序和具体作用详解
Android RecyclerView对应的适配器中方法的执行顺序和具体作用详解
118 0
|
存储 缓存 索引
更好的 RecyclerView 表项子控件点击监听器
上篇介绍了一种新的监听 RecyclerView 表项点击事件的方法。实现了将点击事件和RecyclerView.Adapter解耦。这一篇介绍如何监听 RecyclerView 表项子控件点击事件。
598 0
|
Java Android开发
【JetPack】为现有 Android 项目配置视图绑定 ( ViewBinding ) 模块 ( 视图绑定不影响传统布局操作 | 视图绑定类关联 Activity | 视图绑定类本质 )(一)
【JetPack】为现有 Android 项目配置视图绑定 ( ViewBinding ) 模块 ( 视图绑定不影响传统布局操作 | 视图绑定类关联 Activity | 视图绑定类本质 )(一)
236 0
【JetPack】为现有 Android 项目配置视图绑定 ( ViewBinding ) 模块 ( 视图绑定不影响传统布局操作 | 视图绑定类关联 Activity | 视图绑定类本质 )(一)
|
Android开发
【JetPack】为现有 Android 项目配置视图绑定 ( ViewBinding ) 模块 ( 视图绑定不影响传统布局操作 | 视图绑定类关联 Activity | 视图绑定类本质 )(二)
【JetPack】为现有 Android 项目配置视图绑定 ( ViewBinding ) 模块 ( 视图绑定不影响传统布局操作 | 视图绑定类关联 Activity | 视图绑定类本质 )(二)
203 0
|
前端开发
利刃 MVVMLight 2:Model、View、ViewModel结构以及全局视图模型注入器的说明
原文:利刃 MVVMLight 2:Model、View、ViewModel结构以及全局视图模型注入器的说明      上一篇我们已经介绍了如何使用NuGet把MVVMLight应用到我们的WPF项目中。
1036 0
|
XML 数据格式 容器
Activity布局加载流程
Activity布局加载流程 一、布局加载流程 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.
1156 0

热门文章

最新文章