Android中的适配器,你知道是做什么的吗?

😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD,日常还会涉及Android开发工作。

如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。 😊 座右铭:不想当开发的测试,不是一个好测试✌️。

热衷分享,喜欢原创,如果觉得博主的文章还不错的话,还请点赞、收藏哦!👍

番外

对了,如果你需要算力 ,那么这篇文章一定对你有用哦!东方国信"幕僚智算"算力云

文章目录

  • [一 收获](#一 收获)
  • [二 适配器简介](#二 适配器简介)
  • [三 适配器的主要职责](#三 适配器的主要职责)
  • [四 Android中适配器的实现类](#四 Android中适配器的实现类)
  • [五 适配器的简单使用](#五 适配器的简单使用)

一 收获

通过本篇文章您将了解到 Android 中适配器Adapter)的作用、常见适配器实例及适配器的简单使用。

二 适配器简介

适配器是一种用于提供数据和管理视图展示的组件,适配器充当数据源与显示视图之间的桥梁,它负责将数据转换为适合显示在用户界面上的视图,并将用户界面上的操作反馈回数据源。

适配器在许多 UI 组件中起到重要的作用,最常见的是在 ListViewRecyclerViewSpinner 等控件中使用。

三 适配器的主要职责

适配器的主要职责包括以下几个方面:

  1. 数据绑定:适配器负责将数据源中的数据与视图进行绑定。它将数据源中的每个项(例如,列表中的一项)与视图的子项进行关联。
  2. 创建视图:适配器负责根据定义的布局文件创建视图。它会根据数据源的项数动态创建视图,并为每个视图设置相应的数据。
  3. 视图重用:为了提高性能和节省内存,适配器会利用视图的重用机制。当滚动列表或回收视图时,适配器会重用之前创建的视图,而不是每次都创建新的视图。
  4. 提供数据数量:适配器会告知 UI 组件有多少个数据项需要展示。这个信息用于确定 UI 组件的大小和滚动范围。
  5. 事件处理:适配器可以处理用户与视图的交互事件,例如点击列表项或选择下拉列表中的项,并在事件发生时更新数据源。

四 Android中适配器的实现类

  1. ArrayAdapter:用于将数据与 ListView 或 Spinner 组件进行绑定的适配器。它使用数组或列表作为数据源,并将每个数据项与系统提供的默认布局(例如 android.R.layout.simple_list_item_1)进行绑定。
  2. BaseAdapter:这是一个抽象类,提供了实现自定义适配器的基本骨架。继承 BaseAdapter 可以实现更灵活和自定义的适配器。它需要开发人员自行实现一些方法,如 getViewgetCountgetItemgetItemId 等。
  3. RecyclerView.Adapter:用于将数据与 RecyclerView 组件进行绑定的适配器。RecyclerView 是一个更灵活和高度可定制的列表视图,适配器是实现 RecyclerView 的关键组件。RecyclerView.Adapter 需要开发人员自行实现一些方法,如 onCreateViewHolderonBindViewHoldergetItemCount 等。
  4. PagerAdapter:用于将数据与 ViewPager 组件进行绑定的适配器。ViewPager 是一个可滑动的视图容器,PagerAdapter 用于提供 ViewPager 的页面内容。PagerAdapter 需要开发人员自行实现一些方法,如 instantiateItemdestroyItemgetCount 等。

五 适配器的简单使用

根据不同的 UI 组件和需求,Android 提供了各种类型的适配器的实现类,,例如 ArrayAdapterBaseAdapterRecyclerView.Adapter 等。当使用 Kotlin 实现 Android 中的适配器时,可以通过继承现有的适配器类或实现适配器接口来创建自定义适配器。

kotlin 复制代码
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
import android.widget.TextView

class CustomAdapter(context: Context, private val data: List<String>) :
    ArrayAdapter<String>(context, 0, data) {

    override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
        var itemView = convertView
        if (itemView == null) {
            itemView = LayoutInflater.from(context).inflate(R.layout.list_item_layout, parent, false)
        }

        val fruitNameTextView = itemView?.findViewById<TextView>(R.id.fruitNameTextView)
        fruitNameTextView?.text = data[position]

        return itemView!!
    }
}

解析:

创建了一个名为 CustomAdapter 的自定义适配器类,它继承了ArrayAdapter 类,并重写 getView 方法,这是适配器中的一个关键方法,用于设置每个列表项的布局和数据。

getView 方法中,首先获取或创建一个 itemView,它是每个列表项的根视图。然后,我们通过调用 findViewById 来获取到自定义布局中的 TextView 控件,并将对应列表项的数据设置到 TextView 中。最后,我们返回 itemView

kotlin 复制代码
val fruits = listOf("Apple", "Banana", "Orange", "Watermelon")
val adapter = CustomAdapter(this, fruits)
listView.adapter = adapter

请注意,CustomAdapter 类继承自 ArrayAdapter<String>,并将数据源 data 传递给父类的构造函数。

对于适配器的具体使用可参考 ListView 或者 RecyclerView 相关文章。

相关推荐
fatiaozhang95277 分钟前
中兴云电脑W102D_晶晨S905X2_2+16G_mt7661无线_安卓9.0_线刷固件包
android·adb·电视盒子·魔百盒刷机·魔百盒固件
CYRUS_STUDIO1 小时前
Android APP 热修复原理
android·app·hotfix
鸿蒙布道师1 小时前
鸿蒙NEXT开发通知工具类(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
鸿蒙布道师1 小时前
鸿蒙NEXT开发网络相关工具类(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
大耳猫2 小时前
【解决】Android Gradle Sync 报错 Could not read workspace metadata
android·gradle·android studio
ta叫我小白2 小时前
实现 Android 图片信息获取和 EXIF 坐标解析
android·exif·经纬度
dpxiaolong3 小时前
RK3588平台用v4l工具调试USB摄像头实践(亮度,饱和度,对比度,色相等)
android·windows
tangweiguo030519874 小时前
Android 混合开发实战:统一 View 与 Compose 的浅色/深色主题方案
android
老狼孩111224 小时前
2025新版懒人精灵零基础及各板块核心系统视频教程-全分辨率免ROOT自动化开发
android·机器人·自动化·lua·脚本开发·懒人精灵·免root开发
打死不学Java代码5 小时前
PaginationInnerInterceptor使用(Mybatis-plus分页)
android·java·mybatis