最新版本:Android中级进阶一ListView使用BaseAdapter
在Android入门walfred提到了使用ListView合理布局数据源,当时提到了ListView在使用时,需要使用adapter来绑定数据,文章中提到的是使用SimpleCursorAdapter,直接绑定数据库查询的游标。但是现在,我们的需求发生了变化,我们需要一个这样的ListView:
1、ListView的列表内容需要定制,每行数据都需要使用一些view来美化,每行数据使用Button按钮来做进一步处理;
2、ListView的数据需要动态刷新;
3、进一步美化ListView,比容添加ListView的页眉和页脚,比如添加或修改ListView的分割线等等;
也就是说,我们在使用ListView的时候一定需要根据需求来使用定制,而不是胡乱盲目的使用,不顾情况的乱套,用的不好反而会被其他人鄙视的,打个比方,你给你家小孩共49人坐在荷载6人的车上去上下学,却把豪华大巴送给有钱的“远方邻居“去使用,这不就扯蛋了嘛!
好了,为了使我的ListView使用更灵活,我们决定使用自己的adapter—继承自BaseAdapter。
下面的代码,我们结合一个实例来讲解,使用多线程断点续传的案例来讲解。
baseadapter的方法比较多,我么只要继承之,自然会生成一坨需要你实现的接口方法,我们看下有哪些需要我们去完善的!~
我的adapter名字叫做DownloadAdapter:
- public class DownloadAdapter extends BaseAdapter {
- @Override
- public int getCount() {
- // TODO Auto-generated method stub
- return 0;
- }
- @Override
- public Object getItem(int arg0) {
- // TODO Auto-generated method stub
- return null;
- }
- @Override
- public long getItemId(int position) {
- // TODO Auto-generated method stub
- return 0;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- // TODO Auto-generated method stub
- return null;
- }
- }
我需要完善的方法有上面这么多,看这些名字,我们基本晓得我们需要完善的这些接口都是干什么的,这个DownloadAdapter和我们的ListView想绑定起来,提供数据显示和相关的控件,工作原理是这样的:
1、使用getCount()方法获取数据源中对象的条目,将来这是ListView的显示条数,这个条目我们把它都是认作为一个一个的对象;
2、getItemId()方法是获取每个对象的id,从0开始到getCount()-1依次显示;
3、既然晓得了每条目的id之后,我们就可以根据id使用getItem()拿到具体的条目对象;
4、getView()方法就是拿到条目对象之后,依照对象里面的控件依次显示咋ListView条目中。