文档章节

Android开发——说说Adapter那点事

Lechance
 Lechance
发布于 2014/08/26 20:58
字数 498
阅读 20
收藏 0

Adapter在Android中占据一个重要的角色,它是数据和UI(View)之间一个重要的纽带。在常见的View(ListView,GridView)等地方都需要用到Adapter。如图1直观的表达了Data、Adapter、View三者的关系。

未命名

图1 Adapter、数据、UI三者关系(PS:此图来自Google I/O)

一、Android中Adapter

 

Android-Adapter

图2:Android中Adapter类型层级图

由 图2我们可以看到在Android中与Adapter有关的所有接口、类的完整层级图。在我们使用过程中可以根据自己的需求实现接口或者继承类进行一定的 扩展。比较常用的有 BaseAdapter,ArrayAdapter,SimpleCursorAdapter等。

  • BaseAdapter是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性;

  • ArrayAdapter支持泛型操作,通常需要实现getView方法,特殊情况下(结合数据row id),为了让ui事件相应处理方便点最好重写getItemId;

  • SimpleCursorAdapter可以适用于简单的纯文字型ListView,它需要Cursor的字段和UI的id对应起来。如需要实现更复杂的UI也可以重写其他方法。

二、一个继承BaseAdapter的类的代码段

 

/**
  *歌曲列表适配器
  *
  **
*/
public class AudioListAdapter extends BaseAdapter{

    private Context mContext;

    private ArrayList<Audio> mAudios;

    public AudioListAdapter(Context mContext,ArrayList<Audio> mAudios){
        this.mContext=mContext;
        this.mAudios=mAudios;
    }
    
    @override
    public int getCount(){
       return mAudios!=null?mAudios.size():0;
    }
    @override
    public Object getItem(int position){
        if((mAudios != null && mAudios.size > 0 ) && (position >= 0 && position < mAudios.size())){
            return mAudios.get(position);
        }
        return null;
    }
    /**
     *如果集合中的对象数据来自数据库,建议此方法返回该对象在数据库中的ID
     */
    @override
    public long getItemId(int position){
        if((mAudios != null && mAudios.size > 0) && (position >= 0 && position < mAudios.size())){
        return mAudios.get(position).getId();
        }
        return position;
    }
    @override
    public View getView(int position,View convertView,ViewGroup parent){
        //TODO return custom view
    }
}


本文转载自:http://www.cnblogs.com/halzhang/archive/2010/11/28/1890637.html

上一篇: Http Headers
下一篇: 高级排序-划分
Lechance
粉丝 2
博文 30
码字总数 1832
作品 0
静安
程序员
私信 提问
Android开发——09Google I/O之让Android UI性能更高效(1)

一、前言 前几天发现09年Google IO大会关于移动应用方面的主题有一些不错的PPT,对移动应用开发很有帮助。自己看了一些,边看边和大家分享。既然是PPT就很简化了,我会根据实际情况写一些Dem...

zhouw
2014/03/23
19
0
Android Adapter详解

Android Adapter Adapter是用来帮助填充数据的中间桥梁,比如通过它将数据填充到ListView, GridView, Gallery.而android 提供了几种Adapter:ArrayAdapter, BaseAdapter, CursorAdapter, Hea...

小近
2014/12/17
148
0
程序猿媛六:ListView的Item点击事件(消息传递)

ListView的Item点击事件(消息传递) 声明:博文为原创,文章内容为,效果展示,思路阐述,及代码片段。 转载请保留原文出处“http://my.oschina.net/gluoyer/blog”,谢谢! 您可以到博客的...

花佟林雨月
2013/12/07
25.5K
0
Android技能树 — Fragment总体小结

前言: Android基础知识 Android技能树 — Fragment总体小结 Android技能树 — 动画小结 Android技能树 — View小结 Android技能树 — Activity小结 Android技能树 — View事件体系小结 Andr...

青蛙要fly
08/19
0
0
说说ViewHolder的另一种写法

每为一个AdapterView写Adapter适配器,你是否都会创建 一个static的ViewHolder类来负责临时存储ItemView?不用回答我也已经听见了你的抱怨,那么下面为大家介绍另外一种我经常使用的写法,从...

Jack_1900
2014/07/09
3.1K
3

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
1K
14
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
38
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
40
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
61
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部