收藏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. APP版本号记录

    VoLTE版本: VT_BV0800V1.0.0B06 800M版本: NETARTIST_BV0800V1.0.0B01 看详细版本号:9831275#

  2. Windows 7 64 位操作系统安装 Ubuntu 17.10

    一.准备工作 1. DiskGenius:分区工具,为 Linux 建立单独的分区.(Linux 公社下载源) 2. UUI:Universal USB Installer,通用 U 盘安装器,用来制 ...

  3. 64_r1

    R-3.4.0-2.fc26.x86_64.rpm 15-May-2017 14:49 31030 R-ALL-1.6.0-4.fc26.noarch.rpm 17-Feb-2017 22:05 11 ...

  4. 制作自动化系统安装U盘

    1.挂载CentOS6.6镜像 [root@test88 ~]# mkdir /application/tools -p [root@test88 ~]# cd /application/tools/ ...

  5. FPM定制RPM包

    安装FPM FPM是ruby写的打包工具,ruby版本要大于1.8.5 #安装ruby环境和gem包管理器 [root@test88 ~]# yum install -y ruby rubygems ...

  6. Nginx-1.6.3源码安装、虚拟主机

    源码安装nginx cat /etc/redhat-release uname -rm yum install pcre-devel openssl-devel -y rpm -qa pcre pcr ...

  7. 关于JavaScript中实现继承,及prototype属性

    感谢Mozilla 让我弄懂继承. JavaScript有八种基本类型,函数属于object.所以所有函数都继承自object.//扩展:对象,基本上 JavaScript 里的任何东西都是对象,而且 ...

  8. Linux下软件的安装与管理

    1.源码安装方式 2.RPM包方式安装 3.yum安装方式 4.二进制软件安装方式 1.源码安装方式 (1)下载.解压Apache源码: mkdir /apache #在根目录下创建一个apache目 ...

  9. ultra-console

    console.__proto__.styleText = function (option) { if (!option) { console.groupCollapsed('请输入option') ...

  10. cocos2dx 开发配置的一些环境变量(mac/linux)

    通常开发需要配置一些环境变量,下面把我电脑的部分配置分析一下. 1.android开发配置,ndk,sdk,ant 2.cocos2dx开发配置,cocos2d-x export COCOS2DX_R ...