1. BaseAdapter的使用实例

 BaseAdapter baseAdapter = new BaseAdapter() {@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ImageView imageView;if (convertView == null){imageView = new ImageView(GridViewActivity.this);imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);imageView.setPadding(5, 0, 5, 0);}else{imageView = (ImageView) convertView;}imageView.setImageResource(imageId[position]);return imageView;}@Overridepublic long getItemId(int position) {return position;}@Overridepublic Object getItem(int position) {return position;}@Overridepublic int getCount() {return imageId.length;}};

2. SimpleAdapter的使用实例

public class GridViewActivity extends Activity {private int[] imageId = new int[] {R.drawable.img01, R.drawable.img02, R.drawable.img03, R.drawable.img04,R.drawable.img05, R.drawable.img06, R.drawable.img07, R.drawable.img08, R.drawable.img09, R.drawable.img10, R.drawable.img11, R.drawable.img12, };private String[] title = new String[] { "花开富贵", "海天一色", "日出", "天路", "一枝独秀","云", "独占鳌头", "蒲公英花", "花团锦簇", "争奇斗艳", "和谐", "林间小路" }; // 定义并初始化保存说明文字的数组private GridView gridView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_gridview);gridView = (GridView) findViewById(R.id.gridView1);List<Map<String, Object>> listItems = new ArrayList<Map<String,Object>>();for (int i = 0; i < imageId.length; i++){Map<String, Object> map = new HashMap<String, Object>();map.put("image", imageId[i]);map.put("title", title[i]);listItems.add(map);}SimpleAdapter adapter = new SimpleAdapter(this, listItems, R.layout.items, new String[] {"title", "image"}, new int[] {R.id.title, R.id.image});gridView.setAdapter(adapter);}
}

Android中常用适配器及定义自己的适配器

2013-03-23 10:04:07|  分类: 手机软件开发 |  标签:android  |举报|字号 订阅

本文转载自android《Android中常用适配器及定义自己的适配器》

一、适配器介绍
顾名思义,就是把一些数据给弄得适当,适合以便于在View上显示。可以看作是界面数据绑定的一种理解。它所操纵的数据一般都是一些比较复杂的数据,如数组,链表, 数据库,集合等。适配器就像显示器,把复杂的东西按人可以接受的方式来展现。

那么适配器是怎么处理得到的数据,并把它显示出来的呢。其实很简单,说白了适配器它也是一个类,在类里面它实现了父类的这几个方法:

public int getCount() //得到数据的行数

public Object getItem(int position)//根据position得到某一行的记录

public long getItemId(int position)//的到某一条记录的ID

publicView getView(int position, View convertView, ViewGroup parent)

最后是最重要的相比于其它几个方法,它显式的定义了,适配器将要 以什么样的,方式去显示我们所填充的数据,在自定义的适配器里面我们通常会给它写个布局文件

我们常用的适配器一共有三个,当然不包含自定义的适配器,哪三个,我想用过的人都知道

那就是ArrayAdapter,SimpleAdapter,SimpleCursorAdapter 这三个,他们都是继承于BaseAdapter 。

二、ArrayAdapter和SimpleAdapter适配器使用

一般对于前两个适配器,他们的数据来源无非就是String[]或者List 。

下面我们列举两个例一子:
             例一,数组作为数据源,填充的是ArrayAdapter
                     public class Example extends ListActivity{

String[] sex = new String(){"男",“女”}        //数据源

ArrayAdapter<String>  adapter;                //数组适配器,用的是泛型

public voidonCreate(Bundle SavedInstanceState){

super.onCreate(SavedInstanceStat);

//在对适配器初始化的时候,顺便把数据源装载到适配里,

//this.Android.R.Layout.Simple_List_Item_1这句话的意思是将数据源以系统定义好的样式放到适配器里.

adapter=new ArrayAdapter<String>(this,Android.R.Layout.Simple_List_Item_1,sex);

this.setAdapter(adapter);//这是一个控件类,所以可以直接将适配器绑定到本身对象中。

}

}

例二:List作为数据源,填充的是SimpleAdapter

ListView list = (ListView)findViewById(R.id.MyListView);

//生成动态数组,并且转载数据

ArrayList<HashMap<String, String>> mylist = newArrayList<HashMap<String, String>>();

for(int i=0;i<30;i++) {

HashMap<String, String>map = new HashMap<String, String>();

map.put("ItemTitle","This is Title.....");

map.put("ItemText","This is text.....");

mylist.add(map);

}

//生成适配器,数组===》ListItem

SimpleAdapter mSchedule = new SimpleAdapter(
                                 this,                                                      //传入上下文对象 
                                 mylist,                                                  //数据来源      
                                 R.layout.my_listitem,                           //ListItem的XML实现 
                                 new   String[]{"ItemTitle", "ItemText"},  //动态数组与ListItem对应的子项
                                 new int[] {R.id.ItemTitle,R.id.ItemText}  //ListItem的XML文件里面的两个TextView ID 
                          );

list.setAdapter(mSchedule);//添加并且显示

三、SimpleCursorAdapter适配器

应该说着两个例子都不难,都是一些我们经常见到的用法,那么对于SimpleCursorAdapter又是怎么用的呢,SimpleCursorAdapter一般主要用于数据库,它的数据来源一般都是数据库查询得到的Cursor 我们来看下面的例子:

String uriString = “content://contacts/people/”;

Cursor myCursor =managedQuery(Uri.parse(uriString), null, null, null, null);

String[] fromColumns = new String[]{People.NUMBER, People.NAME};

int[] toLayoutIDs = new int[] {R.id.nameTextView, R.id.numberTextView};

SimpleCursorAdapter myAdapter;

myAdapter=newSimpleCursorAdapter(
                                   this,              //传入当前的上下文
                                   R.layout.simplecursorlayout,   //一个layout资源
                                   myCursor,  //一个游标
                                   fromColumns,  //包含使用的列的名字的数组
                                   toLayoutIDs

//包含View中的资源ID的数组,与fromColumns大小相同,用于显示相应列的数据值
                              );

myListView.setAdapter(myAdapter);

//我们把一个游标绑定到了ListView上,并使用自定义的layout显示来显示每一个Item。

四,自定义适配器

为什么要定义自己的适配器呢,原因就在于,当我们想用一些其它的展现方式,或者是我们需要的,呈现方式,这是就得DIY了。

首先我们定义一个类让它继承自BaseAdapter,再让它实现一里面所说的那几个方法。那么这个自定义适配器就算好了。

里面的一些方法我在上面都介绍过了,在这就不在赘述了:

public class ImageAdapter extendsBaseAdapter {

private Context mcontext;
                                 //构造函数里面有两个参数,一个是数据的来源,另一个是上下文。

public ImageAdapter(Integer[] imgIds,Context c){

mcontext=c;

imageIds=imgIds;

}

publicint getCount() {

return imageIds.length;

}

publicObject getItem(int position) {

return null;

}

publiclong getItemId(int position) {

return position;

}

//主要工作是做在这里,可以自定义布局,在这里我就不多说了

publicView getView(int position, View convertView, ViewGroup parent) {

ImageView imageview = newImageView(mcontext);

imageview.setImageResource(imageIds[position]);

imageview.setLayoutParams(newGallery.LayoutParams(120,120));

imageview.setScaleType(ImageView.ScaleType.FIT_CENTER);

return imageview;

}

}

最后这个适配器就可以用了。

参考网址:http://spring.wind2006.blog.163.com/blog/static/1205586520132231047411/

【Android】 Android中适配器简介相关推荐

  1. Android开发中长度单位简介

    PX:(Pixel)像素 可以这样理解:屏幕是有网格组成的,像素就是屏幕上的网格一共有多少个格子.屏幕上的点,与密度相关.密度大了,单位面积上的px会比较多. ppi:( Pixels per inc ...

  2. Android版本中蓝牙简介

    Android1.5 中增加了蓝牙功能,立体声 Bluetooth 支持:A2DP [Advanced Audio Distribution Profile].AVCRP [Audio/Video R ...

  3. 【Android Protobuf 序列化】Protobuf 使用 ( protobuf-gradle-plugin 插件简介 | Android Studio 中配置插件 | AS 中编译源文件 )

    文章目录 一.protobuf-gradle-plugin 插件简介 二.Android Studio 中配置 protobuf-gradle-plugin 插件 三.Android Studio 中 ...

  4. android学习笔记----ListView和各种适配器简介

    学习笔记 目录 打气筒(LayoutInflater对象)介绍: ArrayAdapter用法: 关于具有自定义 ArrayAdapter 的示例应用见这里: SimpleAdapter用法: 关于L ...

  5. Android中GPS简介及其应用

    随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) GPS是Global Positioning System(全球定位系统)的简称,它的作用就是为全球的物体提供 ...

  6. Android Makefile中inherit-product函数简介,以及与include的区别

    在 Android Makefile 中时不时会看见 inherit-product 函数的使用,类似下方这样:         $(call  inherit-product,  vendor/do ...

  7. Android 数据库(SQLite)【简介、创建、使用(增删改查、事务、实战演练)、数据显示控件(ListView、Adapter、实战演练-绿豆通讯录)】

    目   录 (壹)SQLite数据库简介 (贰)数据库的创建 (叁)数据库的使用 3.1.SQlite的基本操作 3.1.1.添加数据 3.1.2.修改数据 3.1.3.查询数据 3.1.4.删除数据 ...

  8. Android开发中的日常积累

    欢迎Star,Fork https://github.com/lizhangqu/CoreLink 里面记录了开发过程中有用的东西,欢迎补充,不定时更新. Android 性能优化 Android内存 ...

  9. Android 开发中的日常积累

    Android 性能优化 Android性能优化视频,文档以及工具 胡凯-性能优化 Android最佳性能实践(1):合理管理内存 Android最佳性能实践(2):分析内存的使用情况 Android ...

最新文章

  1. todoist 无法登陆_通过构建Todoist克隆将您的React技能提升到一个新的水平
  2. 自己动手写C语言编译器(2)
  3. mysql 被关闭了_mysql被关闭简析
  4. RE:大家说说开发的时候类名和文件名一般是怎么规范的?
  5. javascript高程3 学习笔记(二)
  6. 编写自己的Javascript库-1
  7. 搞不清边缘计算几款产品差异?动动小手点这里!
  8. ddos应急处理_写给十九大安保应急的兄弟们 来看看DDOS攻击应急预案
  9. 台式机dp接口_精品导购:你想要的商务台式机 都在这里了!
  10. php warning: array_merge(),php数组合并array_merge()函数使用注意事项_php技巧
  11. 【C/C++】C++98基础上的C++11新特性
  12. tomcat的安装以及配置
  13. c语言编程 通讯录排序,C语言实现一个通讯录
  14. 如何利用kali暴力破解WiFi密码
  15. 非常实用的程序员在线工具箱大全,码农必备
  16. android夜景录像模式,【图片】三种夜景拍摄手法优缺点对比,仅供参考【android吧】_百度贴吧...
  17. Faiss相似性搜索类库
  18. 写给大学时期自己的寄语
  19. 跳表SkipList介绍与实现
  20. PC微信逆向:实现自动添加好友分享名片

热门文章

  1. ACE线程管理机制-并发控制
  2. 信息传递服务器,AJAX的与服务器之间的信息传递原理(初学)
  3. java屏蔽关键字_替换禁用语(指定关键字)的过滤器
  4. 2021巢湖第一中学高考成绩查询,2021年巢湖高中录取分数线是多少及高中排名榜...
  5. oracle查询第二个字为a,Oracle多表查询 - osc_yqnlq679的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. Mac关于Node版本升降
  7. Java黑皮书课后题第10章:*10.5(显示素数因子)编写一个程序,提示用户输入一个正整数,然后以降序显示它的所有最小因子
  8. Java黑皮书课后题第5章:*5.42(金融应用:求销售额)如下重写编程练习题5.39:①使用for循环替代do-while循环②允许用户自己输入COMMISSION_SOUGHT而非将它固定为常量
  9. Java黑皮书课后题第5章:5.6(英里与千米之间的互换)编写一个程序,并排显示下面两个表格
  10. 20181120-1 每周例行报告