ListView以及常用Adapter使用总结

ListView


  • 以列表显示数据
  • MVC模式:ListView相当于MVC框架中的V(视图);Adapter相当于MVC框架中的C(控制器);数据源(比如ArrayList<String>)相当于MVC框架中的M(模型)

关于安卓中使用MVC模式的控件的文章 http://cinderella7.blog.51cto.com/7607653/1281696

  • ListView的每一个条目都是一个View对象。关于getView()的疑惑 ,其实在这些Adapter中,只有BaseAdapter没有实现getView方法,其他的Adapter都实现了getView方法。所以对于常见的数据源都可以使用以下各种Adapter来完成适配,不同的Adapter根据其构造函数的传入参数你会发现适用的场景。如果ListView条目异常,才会考虑继承BaseAdapter并且重写其方法特别是getView()来自定义将数据填充到控件上的方式,而且你可以通过阅读其他Adapter的getView()的实现方式来优化你自己的Adapter的数据显示方式(也即你要了解ListView显示数据的基本流程)。
  • 相关文章:
    http://www.cnblogs.com/itstudent/p/3729117.html
    http://blog.csdn.net/a910626/article/details/46946639

SimpleCursorAdapter

  • 使用数据源 Cursor , 这是常见的使用数据库时返回的数据源,所以此Adapter用于显示数据库数据
  • 示例工程名: ListViewShowSQLite

SimpleAdapter

  • 使用数据源List<Map<String,?>> ,例如ArrayList<HashMap<String , Object>>
  • 示例工程名: SimpleAdapter

ArrayAdapter

  • 使用数据源 String[] 或者List<String>
  • 除了可以使用此Adapter显示数据,还可以用来显示单选列表或者多选列表
  • 示例工程名: ArrayAdapter

BaseAdapter

  • 此Adapter是一个抽象类,可定制度最高。
  • 通过使用BaseAdapter来了解ListView的执行流程和优化问题
  • ListView中的每个条目都是一个view , 通过LayoutInflater.inflate()查找布局文件id并实例化
  • 在首次执行时,使用findViewById得到view ,将这些view封装在一起就是ViewHolder,然后使用View的setTag()方法来保存ViewHolder。之后每次getView就可以使用getTag()取出ViewHolder赋上数据
  • 示例工程名 : BaseAdapter

讲课时涉及到的其他知识点

  • ViewGroup主要充当容器 ,对子View进行管理。ViewGroup(树根)和它的孩子们(View和ViewGroup)以树形结构形成了一个层次结构。 Android的布局继承于ViewGroup
  • findViewById 跟布局相关,假如有多个布局文件会导致混淆, 那么最好准确指定是哪个布局,比如view1.findViewById()
  • SetText()不能传入int参数,因为int参数会被当作resourId使用,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值