android中适配器的作用,适配器模式 在Android中的简单理解
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中的简单理解相关推荐
- android中gradle的作用,Gradle 之 Android 中的应用
在上一篇文章中 Gradle 之语言基础 Groovy 主要介绍了 Groovy 的基础语法(如果没有 Groovy 的基础,建议先看看上篇文章,如果可以动手敲一下里面的示例代码就更好不过了),也是为 ...
- android四大组件的作用简书,Android四大组件是什么
Android四大组件是:活动.服务.广播接收器.内容提供商.它们的英文名称是ACTIVITY.SERVICE.BroadcastReceiver.Content Provider.四个组件分别起到不 ...
- C语言switch中break的作用,C语言switch中break语句的作用
问题: break在for循环.while循环等循环流程控制中起的作用是停止执行break后面的语句,跳出本次循环,并跳出该循环控制体: 在switch条件选择中,没有了循环控制,break又起什么作 ...
- Java中static的作用详解_java中static作用详解
static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...
- 【计算机系统】 信息在计算机中的表示和内存地址与空间的简单理解
1. 信息在计算机系统中的表示 我们知道,信息在计算机系统中是以二进制的方式进行传送,存储的.那么信息在计算机系统中是如何表示的呢?在这里可分为数值信息和非数值信息两个方面进行讨论. 数据信息分类示意 ...
- android mkdirs 不起作用,无法在Android 6.0中创建的目录与mkdirs(存储许可OK)
但是,如果用户授予应用程序的存储权限,则应用程序无法使用'mkdirs'在'onRequestPermissionsResult'方法中创建目录. 在AndroidManifest.xml我把'use ...
- 在c语言中逗号的作用,关于c语言中的逗号运算符???
等下..答错了..还需要理解一下神马是逗号表达式..我前面说的和uuyyhhjj与delta_charlie的意思一样,但其实我们都搞错了.你可以自己把我们的例子都运行一下,看看是不是这样.下面我感觉 ...
- python中main的作用_浅析python 中__name__ = '__main__' 的作用
很多新手刚开始学习python的时候经常会看到python 中__name__ = \'__main__\' 这样的代码,可能很多新手一开始学习的时候都比较疑惑,python 中__name__ = ...
- linux中profile文件作用,解析Linux系统中bashrc和profile文件的作用区别
使用终端ssh登录Linux操作系统的控制台后,会出现一个提示符号(例如:#或~),在这个提示符号之后可以输入命令,Linux根据输入的命令会做回应,这一连串的动作是由一个所谓的Shell来做处理. ...
最新文章
- 升级在即,BU发布新版本并将Mempool未确认交易限制增加到500
- C++知识点30——使用C++标准库(关联容器map及其初始化,赋值,查找,添加,删除与迭代器失效)
- 字节流读数据 一次读一个字节
- js调用微信扫一扫demo_JS 调用微信扫一扫功能
- img绝对路径图片显示_使用python爬虫去风景图片网站批量下载图片
- 为什么物联网产品迫切需要良好的 UI/UX 设计?
- java基础试题_Java基础测试题带答案
- 麦克劳林公式怎么记忆_泰勒展开的公式怎么记忆?
- 浅述SATA接口Raid、AHCI、IDE三种模式
- 基于互信息的EEG脑网络情感识别(四)——建立MI矩阵
- 东财《领导科学X》综合作业
- 目标检测从两阶段R-CNN系列到单阶段YOLO系列精炼
- 阿祥Python自学笔记
- mac+python3+selenium做pc的界面自动化测试
- typedef和define
- Windows BitLocker驱动器加密
- python索引右往左_Python字符串从左到右索引默认0开始的,最大范围是字符串长度少1...
- Spring-第一篇-快速入门
- 前端、vue、Vue3弹幕实现;前端CSS实现弹幕
- 4.R语言【rehsape2包】介绍、melt( )、cast( )函数、其他使用技巧