😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD,日常还会涉及Android开发工作。
如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。 😊 座右铭:不想当开发的测试,不是一个好测试✌️。
热衷分享,喜欢原创,如果觉得博主的文章还不错的话,还请点赞、收藏哦!👍
番外
对了,如果你需要算力 ,那么这篇文章一定对你有用哦!东方国信"幕僚智算"算力云。
文章目录
- [一 收获](#一 收获)
- [二 适配器简介](#二 适配器简介)
- [三 适配器的主要职责](#三 适配器的主要职责)
- [四 Android中适配器的实现类](#四 Android中适配器的实现类)
- [五 适配器的简单使用](#五 适配器的简单使用)
一 收获
通过本篇文章您将了解到 Android 中适配器
(Adapter
)的作用、常见适配器实例及适配器的简单使用。
二 适配器简介
适配器
是一种用于提供数据和管理视图展示的组件,适配器充当数据源与显示视图之间的桥梁,它负责将数据转换为适合显示在用户界面上的视图,并将用户界面上的操作反馈回数据源。
适配器在许多 UI 组件中起到重要的作用,最常见的是在 ListView
、RecyclerView
、Spinner
等控件中使用。
三 适配器的主要职责
适配器的主要职责包括以下几个方面:
- 数据绑定:适配器负责将数据源中的数据与视图进行绑定。它将数据源中的每个项(例如,列表中的一项)与视图的子项进行关联。
- 创建视图:适配器负责根据定义的布局文件创建视图。它会根据数据源的项数动态创建视图,并为每个视图设置相应的数据。
- 视图重用:为了提高性能和节省内存,适配器会利用视图的重用机制。当滚动列表或回收视图时,适配器会重用之前创建的视图,而不是每次都创建新的视图。
- 提供数据数量:适配器会告知 UI 组件有多少个数据项需要展示。这个信息用于确定 UI 组件的大小和滚动范围。
- 事件处理:适配器可以处理用户与视图的交互事件,例如点击列表项或选择下拉列表中的项,并在事件发生时更新数据源。
四 Android中适配器的实现类
ArrayAdapter
:用于将数据与 ListView 或 Spinner 组件进行绑定的适配器。它使用数组或列表作为数据源,并将每个数据项与系统提供的默认布局(例如android.R.layout.simple_list_item_1
)进行绑定。- BaseAdapter:这是一个抽象类,提供了实现自定义适配器的基本骨架。继承 BaseAdapter 可以实现更灵活和自定义的适配器。它需要开发人员自行实现一些方法,如
getView
、getCount
、getItem
和getItemId
等。- RecyclerView.Adapter:用于将数据与 RecyclerView 组件进行绑定的适配器。RecyclerView 是一个更灵活和高度可定制的列表视图,适配器是实现 RecyclerView 的关键组件。RecyclerView.Adapter 需要开发人员自行实现一些方法,如
onCreateViewHolder
、onBindViewHolder
和getItemCount
等。- PagerAdapter:用于将数据与 ViewPager 组件进行绑定的适配器。ViewPager 是一个可滑动的视图容器,PagerAdapter 用于提供 ViewPager 的页面内容。PagerAdapter 需要开发人员自行实现一些方法,如
instantiateItem
、destroyItem
和getCount
等。
五 适配器的简单使用
根据不同的 UI 组件和需求,Android 提供了各种类型的适配器的实现类,,例如 ArrayAdapter
、BaseAdapter
、RecyclerView.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 相关文章。