收藏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. THINKPHP简单商品查询项目

    代码:http://files.cnblogs.com/files/wordblog/test.zip

  2. nginx 配置代理某个路径

    location /test{ proxy_pass http://localhost:8765/test; proxy_set_header Host $http_host; } 其中红色的那句可以 ...

  3. 第三讲:ifconfig:最熟悉又陌生的命令行

    你知道怎么查看IP地址吗? 当面试听到这个问题的时候,面试者常常会觉得走错了房间.我面试的是技术岗位啊,怎么问这么简单的问题? 的确,即便没有专业学过计算机的人,只要倒腾过电脑,重装过系统,大多也会知 ...

  4. springBoot单元测试-模拟MVC测试

    1)模拟mvc测试,和基础测试是一样的, 都需要在pom文件中引入junit的支持. 略 2)编写测试类 Application1TestMVC 在类头上除啦加入之前的@RunWith(SpringR ...

  5. linux 实现自动创建ftp用户并创建文件夹

    创建一个 createuser.sh的脚本文件 #!/bin/sh #传入的文件名 name=$1 #创建该用户所对应的ftp文件夹   /srv/ftp是我的ftp服务器的根目录 mkdir /sr ...

  6. Python学习笔记——数据结构和算法(一)

    1.解压序列赋值给多个变量 任何的序列(或者是可迭代对象)可以通过一个简单的赋值语句解压并赋值给多个变量. 唯一的前提就是变量的数量必须跟序列元素的数量是一样的. >>> data ...

  7. 数学中的Sin和Cos是什么意思?(转)

    数学中的Sin和Cos是什么意思? 作者:admin 分类:生活随笔 发表于 2012年03月21日 16:48 问:数学中的Sin和Cos是什么意思? 答:sin, cos, tan 都是三角函数, ...

  8. 主机名/etc/hosts文件的作用

    1,/etc/hosts,主机名ip配置文件. # Do not remove the following line, or various programs # that require netwo ...

  9. poj 2420(模拟退火)

    A Star not a Tree? Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6066   Accepted: 285 ...

  10. angular.js 验证码注册登录

    css部分 header{ height: 50px; line-height: 50px; display: flex; } .callback{ text-align: left; display ...