adapter体系

本文详细介绍了Android开发中列表和Adapter的基本概念及体系结构。包括Adapter接口的不同层次、常用方法,以及如何根据实际需求定制Adapter。

在android开发中列表的使用是十分常见的。google对列表的封装使列表既有显示传统文本列表的能力,也有加入了诸如选择项、复选项等处理事件的能力。这里写一些我这几天对这个问题的理解。

在android的api中,LIST和adapter都被放在了android.widget包内。包内的具体结构我这里先不展示了,主要侧重列表和adapter。adapter的作用就是将要在列表内显示的数据和列表本身结合起来。列表本身只完成显示的作用,其实他就是继承自VIEWGROUP类。但是他又有一个独特的函数就是setAdapter()就是完成了view和adapter的结合。adapter如同其本身含义,其实就是一个适配器,他可以对要显示的数据进行统一的封装,主要是将数据变成view提供给list。

我们先来看看adapter的体系:

public interface Adapter----0层(表示继承体系中的层次)

public interface ExpandableListAdapter---(无所谓层次因为没有其他接口继承实现它)

这是adapter的始祖,其他个性化的adapter均实现它并加入自己的接口。

public interface ListAdapter----1层

public interface SpinnerAdapter----1层

public interface WrapperListAdapter----2层(实现ListAdapter)

以上接口层面上的体系已经完了。可以看出来作为widget view的桥梁adapter其实只分为2种:ListAdapter和SpinnerAdapter以及ExpandableListAdapter。也就是说所有widget也就是基于list和spinne与ExpandableList三种view形式的。

由于在实际使用时,我们需要将数据加入到Adapter,而以接口形式呈现的adapter无法保存数据,于是Adapter就转型为类的模式。

public abstract class BaseAdapter----2层(实现了ListAdapter和SpinnerAdapter)

以抽象类的形式出现构造了类型态下的顶层抽象,包容了List和Spinner

public class ArrayAdapter----3层

public class SimpleAdapter---3层

public class CursorAdapter----3层(CursorAdapter其后还有子类这里先不探讨)

基本体系有了之后,让我们看看顶层Adapter里有哪些方法(只列举常用的):

abstract Object getItem(int position)

abstract int getCount()

abstract long getItemId(int position)

abstract int getItemViewType(int position)

abstract View getView(int position,View convertVeiw,ViewGroup parent)

以上是比较重要的方法,ArrayAdapter他们也是重新实现以上方法的。在实际的开发过程中,往往我们要自己做属于自己的Adapter,以上方法都是需要重新实现的。这个在android提供的APIdemo例子中可以看到。今天先写这么多

### 关于适配器 (Adapter) 和转换器 (Transformer) 的概念及用法 #### 适配器 (Adapter) 适配器是一种轻量级模块,旨在微调预训练模型的同时减少参数数量并提高效率。通过引入少量额外参数来调整现有网络结构而不改变其大部分权重,从而实现特定任务上的性能提升。这种机制允许快速适应新领域或数据集而无需重新训练整个神经网络架构。 在一维适配器的研究中提到,“一维适配器可以作为通用解决方案,在不同应用场景下发挥作用。”[^1] 对于具体应用实例而言,IP-Adapter 是一种专门针对图像处理的人脸特征提取工具。它能够有效地将在给定条件下学习到的人脸表征迁移到新的图片上,确保生成结果具有一致性和连贯性。“您可以通过加载 `ip-adapter-full-face_sd15.bin` 文件中的权重来进行人脸迁移操作。”[^2] ```python from diffusers import DDIMScheduler, EulerDiscreteScheduler pipeline.load_ip_adapter( "h94/IP-Adapter", subfolder="models", weight_name="ip-adapter-full-face_sd15.bin" ) ``` #### 转换器 (Transformer) 相比之下,转换器代表了一类更复杂的深度学习框架,最初设计用于自然语言处理任务。该体系基于自注意力机制(Self-Attention Mechanism),使得模型能够在不依赖循环或卷积层的情况下捕捉序列间的关系。这不仅提高了计算效率还增强了表达能力,使其成为现代NLP系统的基石之一。 尽管最初的目的是解决文本相关的问题,但随着研究进展,人们发现转换器同样适用于计算机视觉等领域。例如,在视频人物再识别方面的工作展示了如何利用时空记忆网络增强跨镜头跟踪效果。“空间时间记忆网络被用来加强视频片段内个体身份的一致性表示。”[^3] 综上所述,虽然两者都属于机器学习组件范畴,不过它们各自侧重的应用场景和技术特点存在显著差异: - **适配器** 主要关注于简化已有大型模型的定制化过程; - **转换器** 则更多涉及构建全新类型的高效能算法以应对复杂的数据关联挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值