android中适配器的作用,适配器模式 在Android中的简单理解「建议收藏」

android中适配器的作用,适配器模式 在Android中的简单理解「建议收藏」Android在Android上提到适配器模式就会想到最常用的ListView和BaseAdapter在这个功能的使用中,类似于适配器模式的对象适配器例如在ListView中想用一个getView()方法,但是不同的数据,不同的需求,会有不同的getView()结果,所以getView()不能写死了,那么可能就想到了用适配器模式所以ListView里面包含了一个ListAdapter的成员变量,实…

大家好,又见面了,我是你们的朋友全栈君。

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类的中间类进行适配就可以了

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/138649.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Java面试题整理,2021年腾讯Java高级面试题及答案[通俗易懂]

    Java面试题整理,2021年腾讯Java高级面试题及答案[通俗易懂]正文如果你参加过一些大厂面试,肯定会遇到一些开放性的问题:1、写一段程序,让其运行时的表现为触发了5次YoungGC、3次FullGC、然后3次YoungGC;2、如果一个Java进程突然消失了,你会怎么去排查这种问题?3、给了一段Spring加载Bean的代码片段,阐述一下具体的执行流程?是不是看上去很难,是不是和自己准备的“题库”中的问题不一样?不知道从何处下手?如果你有这种感觉,那么说明你的技术还需要继续修炼。面对如此多的技术面试,怎么样才能说自己的技术已经过关了呢?只有

  • unity自学入门_unity 教程

    unity自学入门_unity 教程六本书Unity5权威讲解Unity3DNGUI实战教程Unity5实战使用C和Unity开发多平台游戏Unity3D人工智能编程Unity官方案例精讲UnityShader入门精要1.Unity5权威讲解#目录第1章 Unity5简介 11.1 Unity3D游戏引擎的诞生 21.2 Unity5的优势 21.2.1 支持多平台 21.2.2 集

  • 强化学习之模仿学习

    强化学习之模仿学习原文链接:https://blog.csdn.net/weixin_37895339/article/details/82863379前文是一些针对IRL,IL综述性的解释,后文是针对《Generativeadversarialimitationlearning》文章的理解及公式的推导。通过深度强化学习,我们能够让机器人针对一个任务实现从0到1的学习,但是需要我们定义出reward函数,在很多复杂任务,例如无人驾驶中,很难根据状态特征来建立一个科学合理的reward。人类学习新东西有一个重要的

  • StoredProcedure “存储过程名” 的TextHeader 中存在语法错误

    StoredProcedure “存储过程名” 的TextHeader 中存在语法错误修改存储过程的时候出现StoredProcedure“存储过程名”的TextHeader中存在语法错误出现这样的问题的解决方法(本人修改已成功)在创建存储过程的时候加了注释,把注释删掉就没有问题了(或者把注释放到其他地方)错误代码如下:CREATEPROCEDURE[dbo].[tableToTxtExport]@dbTabNamenvarchar(4000),@dbBoo…

  • 第五章 面向切面编程(AOP)之二

    第五章 面向切面编程(AOP)之二

  • C语言图书管理系统设计报告「建议收藏」

    C语言图书管理系统设计报告「建议收藏」源代码:https://blog.csdn.net/k_young1997/article/details/73480766XXXX大学C语言课程设计报告题目图书管理系统设计专业班级XXXX级计算机科学与技术本科X班组别计科第…

    2022年10月16日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号