收藏ArrayAdapter、SimpleAdapter和BaseAdapter的一些简短代码片段,希望用时方便想起其用法。

1.ArrayAdapter

只可以简单的显示一行文本

代码片段:

  1. ArrayAdapter<String> adapter = new ArrayAdapter<String>(
  2. this,
  3. R.layout.item,//只能有一个定义了id的TextView
  4. data);//data既可以是数组,也可以是List集合

2.SimpleAdapter

可以显示比较复杂的列表,包括每行显示图片、文字等,但不能对列表进行后期加工(在java代码中加工),
也是只是单纯的负责显示(当然可以设计复杂点的布局来显示复杂列表),例如,每行显示不同背景等。

代码片段:

  1. List<Map<String,Object>> mData= new ArrayList<Map<String,Object>>();;
  2. for(int i =0; i < lengh; i++) {
  3. Map<String,Object> item = new HashMap<String,Object>();
  4. item.put("image", R.drawable.portrait);
  5. item.put("title", mListTitle[i]);
  6. item.put("text", mListStr[i]);
  7. mData.add(item);
  8. }
  9. SimpleAdapter adapter = new SimpleAdapter(
  10. this,
  11. mData,
  12. R.layout.item,
  13. new String[]{"image","title","text"},
  14. new int[]{R.id.image,R.id.title,R.id.text});

3.BaseAdapter

可以实现复杂的列表布局,由于BaseAdapter是一个抽象类,使用该类需要自己写一个适配器继承该类,
正是由于继承了该类,需要我们重写一些方法,让我们可以在代码里控制列表的样式,更加灵活。

代码片段:

    1. private class MyListAdapter extends BaseAdapter{
    2. private Context mContext;
    3. private int[] colors=new int[]{0xff626569,0xff4f5257 };
    4. public MyListAdapter(Context context){
    5. mContext=context;
    6. }
    7. @Override
    8. public int getCount() {
    9. // TODO Auto-generated method stub
    10. return mListText.length;
    11. }
    12. @Override
    13. public Object getItem(int position) {
    14. // TODO Auto-generated method stub
    15. return position;
    16. }
    17. @Override
    18. public long getItemId(int position) {
    19. // TODO Auto-generated method stub
    20. return position;
    21. }
    22. @Override
    23. public View getView(int position, View convertView, ViewGroup parent) {
    24. ImageView image=null;  //这些控件可以单独封装成一个类(Holder),便与优化
    25. TextView title=null;
    26. TextView  content=null;
    27. if(convertView==null){
    28. convertView=LayoutInflater.from(mContext).inflate(R.layout.colorlist, null);
    29. image=(ImageView) convertView.findViewById(R.id.color_image);
    30. title=(TextView) convertView.findViewById(R.id.color_title);
    31. content=(TextView) convertView.findViewById(R.id.color_text);
    32. }
    33. int colorPos=position%colors.length;
    34. convertView.setBackgroundColor(colors[colorPos]);
    35. title.setText(mListTitle[position]);
    36. content.setText(mListText[position]);
    37. image.setImageResource(R.drawable.portrait);
    38. return convertView;
    39. }
    40. }
    41. --------------------------下面样例列表页的控件单独封装成了一个类(Holder),便与优化-----
    42. public class MyBaseAdapter extends BaseAdapter{
    43. private LayoutInflater mInflater;
    44. public MyAdapter(Context context){
    45. this.mInflater = LayoutInflater.from(context);
    46. }
    47. @Override
    48. public int getCount() {
    49. // TODO Auto-generated method stub
    50. return mData.size();
    51. }
    52. @Override
    53. public Object getItem(int arg0) {
    54. // TODO Auto-generated method stub
    55. return null;
    56. }
    57. @Override
    58. public long getItemId(int arg0) {
    59. // TODO Auto-generated method stub
    60. return 0;
    61. }
    62. @Override
    63. public View getView(int position, View convertView, ViewGroup parent) {
    64. ViewHolder holder = null;
    65. if (convertView == null) {
    66. holder=new ViewHolder();
    67. convertView = mInflater.inflate(R.layout.vlist2, null);
    68. holder.img = (ImageView)convertView.findViewById(R.id.img);
    69. holder.title = (TextView)convertView.findViewById(R.id.title);
    70. holder.info = (TextView)convertView.findViewById(R.id.info);
    71. holder.viewBtn = (Button)convertView.findViewById(R.id.view_btn);
    72. convertView.setTag(holder);
    73. }else {
    74. holder = (ViewHolder)convertView.getTag();
    75. }
    76. holder.img.setBackgroundResource((Integer)mData.get(position).get("img"));
    77. holder.title.setText((String)mData.get(position).get("title"));
    78. holder.info.setText((String)mData.get(position).get("info"));
    79. //给每一个列表后面的按钮添加响应事件
    80. holder.viewBtn.setOnClickListener(new View.OnClickListener() {
    81. @Override
    82. public void onClick(View v) {
    83. showInfo();
    84. }
    85. });
    86. return convertView;
    87. }
    88. ------------
    89. public final class ViewHolder{
    90. public ImageView img;
    91. public TextView title;
    92. public TextView info;
    93. public Button viewBtn;
    94. }

[转]Android适配器之ArrayAdapter、SimpleAdapter和BaseAdapter的简单用法与有用代码片段的更多相关文章

  1. Android适配器之ArrayAdapter、SimpleAdapter和BaseAdapter的简单用法与有用代码片段(转)

    摘自:http://blog.csdn.net/shakespeare001/article/details/7926783 Adapter是连接后端数据和前端显示的适配器接口,是数据Data和UI( ...

  2. android有用代码片段

    一.  获取系统版本号: [java] view plaincopy PackageInfo info = this.getPackageManager().getPackageInfo(this.g ...

  3. C++STL模板库适配器之queue队列

    目录 适配器之队列 一丶队列简介 二丶队列(queue)代码操作 1.常用方法 适配器之队列 一丶队列简介 队列是先进先出的数据结构. 在STL中使用 queue表示. 底层使用的是序列容器deque ...

  4. Android开发6:Service的使用(简单音乐播放器的实现)

    前言 啦啦啦~各位好久不见啦~博主最近比较忙,而且最近一次实验也是刚刚结束~ 好了不废话了,直接进入我们这次的内容~ 在这篇博文里我们将学习Service(服务)的相关知识,学会使用 Service ...

  5. 深入理解使用ListView时ArrayAdapter、SimpleAdapter、BaseAdapter的原理

    在使用ListView的时候,我们传给setAdapter方法的Adapter通常是ArrayAdapter.SimpleAdapter.BaseAdapter,但是这几个Adapter内部究竟是什么 ...

  6. 13.Android-ListView使用、BaseAdapter/ArrayAdapter/SimpleAdapter适配器使用

    1.ListView ListView 是 Android 系统为我们提供的一种列表显示的一种控件,使用它可以用来显示我们常见的列表形式.继承自抽象类 AdapterView.继承图如下所示: 以微信 ...

  7. android 适配器simpleadapter和baseadapter区别

    android 适配器 simpleadapter 和 baseadapter 设计网络程序或者数据处理显示程序的时候,常常会使用 simpleadapter 和baseadapter 来实现. ad ...

  8. Android必学之数据适配器BaseAdapter

    什么是数据适配器? 下图展示了数据源.适配器.ListView等数据展示控件之间的关系.我们知道,数据源是各种各样的,而ListView所展示数据的格式则是有一定的要求的.数据适配器正是建立了数据源与 ...

  9. 【转】Android 服务器之SFTP服务器上传下载功能

    原文网址:http://blog.csdn.net/tanghua0809/article/details/47056327 本文主要是讲解Android服务器之SFTP服务器的上传下载功能,也是对之 ...

随机推荐

  1. py,pyc,pyw文件的区别和使用

    熟悉python编程的都知道,python三种最常见的py文件格式,.py,.pyc,.pyw,下面说一说它们各自的使用. py文件 python最常见的文件,是python项目的源码: 文件执行时l ...

  2. python基础===python自带idle的快捷键

    Ctrl + [ Ctrl + ]   缩进代码Alt+3 Alt+4 注释.取消注释代码行Alt+5 Alt+6 切换缩进方式 空格<=>TabAlt+/ 单词完成,只要文中出现过,就可 ...

  3. Mysql 主主复制失败恢复【转】

    Mysql 主主复制失败 Mysql 主主复制失败 故障描述 架构信息 节点信息 故障分析 同步AIPPRD2的从环境 同步AIPPRD1的从环境 故障描述 原因描述 因为机柜PDU老化, 导致整个机 ...

  4. 简单实现JS上传图片预览功能

    HTML代码 <div class="upload"> <input type="button" class="btn" ...

  5. openjudge-NOI 2.6-2000 最长公共子上升序列

    题目链接:http://noi.openjudge.cn/ch0206/2000/ 题解: 裸题,不解释(题目有毒) #include<cstdio> #include<algori ...

  6. 将table导出为excel格式文件

    html: <table cellpadding="0" cellspacing="0" class="data_table" id= ...

  7. BootStrap的table表格的基本写法

    代码如下: <!DOCTYPE html> <html> <head> <title>BootStrap的基础入门</title> < ...

  8. JavaWeb知识回顾-servlet生命周期。

    Servlet生命周期 生命周期,很容易理解,拿人来说,就是你从出生到离开的这一过程.无论是什么技术,只要谈到生命周期都可以这样理解. Servlet的生命周期就是从它被创建到毁灭的过程,整个过程可以 ...

  9. electron 使用中的注意事项

    一.ELECTRON引用JQUERY.JS electron不能像正常的html文件引用jq.js那样(为嘛不造),elecron引用jq.js的方式为: <script>window.$ ...

  10. 【PAT】1014. 福尔摩斯的约会 (20)

    1014. 福尔摩斯的约会 (20) 大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hy ...