收藏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. git常用命令速查表【转】

  2. s3c6410下移植sqlite3.7.8

    http://blog.chinaunix.NET/uid-30441-id-2133838.html 1.下载源代码http://www.sqlite.org/download.html 2.tar ...

  3. Maven如何发布项目到一个Tomcat中

    首先,在本地tomcat的conf/tomcat-users.xml 中配置一个user,准备让maven接入时使用: <role rolename="admin-gui"/ ...

  4. 防范XSS跨站

    所有jsp页面输出全部使用<c:out value="{}"/> 默认就是escapeXml="true" java中间件,<c:out /& ...

  5. JS模块化规范AMD之RequireJS

    1.基本操作 加载 JavaScript 文件(入口文件) RequireJS以一个相对于baseUrl的地址来加载所有的代码 <script data-main="scripts/m ...

  6. js实现动态数字时钟

    1.效果如下 2.html部分 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...

  7. day3修改配置文件

    有如下配置文件,在指定文件位置添加一条新的记录: global log 127.0.0.1 local2 daemon maxconn log 127.0.0.1 local2 info defaul ...

  8. 使用Nginx实现TCP反向代理

    Nginx 在1.9.0版本发布以前如果要想做到基于TCP的代理及负载均衡需要通过打名为 nginx_tcp_proxy_module 的第三方patch来实现,该模块的代码托管在github上网址: ...

  9. C++运算符重载规则

    运算符重载时要遵循以下规则:  ( 1 ) 除了类属关系运算符 " . " .成员指针运算符 " .* " .作用域运算符 " :: " . ...

  10. TCP/IP重新学习

    TCP/IP 是用于因特网 (Internet) 的通信协议. 1.什么是TCP/IP? TCP/IP 是供已连接因特网的计算机进行通信的通信协议. TCP/IP 指传输控制协议/网际协议(Trans ...