Android

在Android上提到适配器模式就会想到最常用的ListView和BaseAdapter

在这个功能的使用中,类似于适配器模式的对象适配器

例如在ListView中想用一个getView()方法,但是不同的数据,不同的需求,会有不同的getView()结果,所以getView()不能写死了,那么可能就想到了用适配器模式

所以ListView里面包含了一个ListAdapter的成员变量,实际上是ListView继承了AbsListView,ListAdapter变量是在AbsListView中声明的

然后BaseAdapter是实现了ListAdapter的,那么我们自定义的***Adapter继承了BaseAdapter,其实也就相当于间接实现了ListAdapter,并且***Adapter会具体去实现getView()方法

那么ListView就可以通过调用setAdapter(ListAdapter adapter)方法,将***Adapter传进去,从而实现了我们想要的结果

Java

适配器模式有两种:

类适配器

对象适配器

场景:

假如A类想用M方法,X类有M方法,但是M方法的结果不一定完全符合A类的需求

那么X类就是写死了,不好用,这样设计不好

那就把X类换成一个接口,弄出一些B,C,D,E.....类中间类出来,让他们都有一个方法来处理M方法的东西,再给A类用

类适配器:

设计一个接口I,让他也有M方法

然后设计一个B类,写好符合A类需求的specialM方法

然后让A类继承B类,并实现I接口的M方法

最后在A类的M方法中以super的方式调用B类的specialM方法

对象适配器:(更多是用对象适配器)

设计一个接口I,让他也有M方法

然后设计一个B类,写好符合A类需求的specialM方法

然后在A类中声明一个B类变量,并且A类实现I接口,那么A类也就有了M方法

最后在A类的M方法中,如果需要,就可以选择调用B类的specialM方法

或者设计一个B类,实现I接口的M方法

然后在A类中声明一个I类变量,再直接调用I接口的M方法

在调用A类的M方法之前,通过例如setAdapter(I Adapter)这样的方法,将B类设置成A类的成员变量

这样就保证了A类和I接口不变,适配不同情况的时候,写一个类似B类的中间类进行适配就可以了

总之,两端不变,通过不同的选择方式,选择不同的中间类,也就是适配器模式了

android中适配器的作用,适配器模式 在Android中的简单理解相关推荐

  1. android中gradle的作用,Gradle 之 Android 中的应用

    在上一篇文章中 Gradle 之语言基础 Groovy 主要介绍了 Groovy 的基础语法(如果没有 Groovy 的基础,建议先看看上篇文章,如果可以动手敲一下里面的示例代码就更好不过了),也是为 ...

  2. android四大组件的作用简书,Android四大组件是什么

    Android四大组件是:活动.服务.广播接收器.内容提供商.它们的英文名称是ACTIVITY.SERVICE.BroadcastReceiver.Content Provider.四个组件分别起到不 ...

  3. C语言switch中break的作用,C语言switch中break语句的作用

    问题: break在for循环.while循环等循环流程控制中起的作用是停止执行break后面的语句,跳出本次循环,并跳出该循环控制体: 在switch条件选择中,没有了循环控制,break又起什么作 ...

  4. Java中static的作用详解_java中static作用详解

    static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...

  5. 【计算机系统】 信息在计算机中的表示和内存地址与空间的简单理解

    1. 信息在计算机系统中的表示 我们知道,信息在计算机系统中是以二进制的方式进行传送,存储的.那么信息在计算机系统中是如何表示的呢?在这里可分为数值信息和非数值信息两个方面进行讨论. 数据信息分类示意 ...

  6. android mkdirs 不起作用,无法在Android 6.0中创建的目录与mkdirs(存储许可OK)

    但是,如果用户授予应用程序的存储权限,则应用程序无法使用'mkdirs'在'onRequestPermissionsResult'方法中创建目录. 在AndroidManifest.xml我把'use ...

  7. 在c语言中逗号的作用,关于c语言中的逗号运算符???

    等下..答错了..还需要理解一下神马是逗号表达式..我前面说的和uuyyhhjj与delta_charlie的意思一样,但其实我们都搞错了.你可以自己把我们的例子都运行一下,看看是不是这样.下面我感觉 ...

  8. python中main的作用_浅析python 中__name__ = '__main__' 的作用

    很多新手刚开始学习python的时候经常会看到python 中__name__ = \'__main__\' 这样的代码,可能很多新手一开始学习的时候都比较疑惑,python 中__name__ = ...

  9. linux中profile文件作用,解析Linux系统中bashrc和profile文件的作用区别

    使用终端ssh登录Linux操作系统的控制台后,会出现一个提示符号(例如:#或~),在这个提示符号之后可以输入命令,Linux根据输入的命令会做回应,这一连串的动作是由一个所谓的Shell来做处理. ...

最新文章

  1. 升级在即,BU发布新版本并将Mempool未确认交易限制增加到500
  2. C++知识点30——使用C++标准库(关联容器map及其初始化,赋值,查找,添加,删除与迭代器失效)
  3. 字节流读数据 一次读一个字节
  4. js调用微信扫一扫demo_JS 调用微信扫一扫功能
  5. img绝对路径图片显示_使用python爬虫去风景图片网站批量下载图片
  6. 为什么物联网产品迫切需要良好的 UI/UX 设计?
  7. java基础试题_Java基础测试题带答案
  8. 麦克劳林公式怎么记忆_泰勒展开的公式怎么记忆?
  9. 浅述SATA接口Raid、AHCI、IDE三种模式
  10. 基于互信息的EEG脑网络情感识别(四)——建立MI矩阵
  11. 东财《领导科学X》综合作业
  12. 目标检测从两阶段R-CNN系列到单阶段YOLO系列精炼
  13. 阿祥Python自学笔记
  14. mac+python3+selenium做pc的界面自动化测试
  15. typedef和define
  16. Windows BitLocker驱动器加密
  17. python索引右往左_Python字符串从左到右索引默认0开始的,最大范围是字符串长度少1...
  18. Spring-第一篇-快速入门
  19. 前端、vue、Vue3弹幕实现;前端CSS实现弹幕
  20. 4.R语言【rehsape2包】介绍、melt( )、cast( )函数、其他使用技巧

热门文章

  1. 2022年山东省安全员C证考试题及在线模拟考试
  2. win10计算机恢复到一天前,5种方法!快速解决Win10系统还原点丢失问题
  3. 【Tableau 图表大全1.0】之条形图
  4. K近邻算法 模拟sklearn调用 自定义优化Knn算法模型 ---完整代码
  5. win10打印机无法删除怎么办
  6. 升级产品思维,三年内让自己的收入翻十倍
  7. 霸气女创始人刘楠:我挖了迪士尼高管,2年把公司干到100亿!
  8. 关于网络硬件配置出现问题,无法上网问题的解决
  9. 轴承故障诊断分类中常用的一些数据集介绍和获取方法
  10. 华硕服务器系统安装win7系统教程,华硕光盘重装系统win7图文教程