做网咖的网站,怎么自己做淘宝客网站,网站前台用什么做,投简历找工作哪个网站好目录 概述优点列表布局RecyclerView一、创建RecyclerView并且在布局中绑定二、实现RecyclerView单个item的布局三、给RecyclerView写一个对应的适配器Adapter1.创建自定义的ViewHolder2.继承Adapter#xff0c;泛型使用我们自定义的ViewHolder3.重写Adapter的三个方法onCreate… 目录 概述优点列表布局RecyclerView一、创建RecyclerView并且在布局中绑定二、实现RecyclerView单个item的布局三、给RecyclerView写一个对应的适配器Adapter1.创建自定义的ViewHolder2.继承Adapter泛型使用我们自定义的ViewHolder3.重写Adapter的三个方法onCreateViewHoldergetItemCountonBindViewHolder 四、RecyclerView绑定布局和适配器五、RecyclerView单个item点击事件1.创建监听接口2.Activity中实现接口并且传给Adapter3.绑定事件中监听4.当点击时执行的是Activity中实现的方法 概述
RecyclerView 是 Android 开发中一个非常强大且灵活的组件用于在有限的窗口中展示大量数据集。它提供了一种比传统的 ListView 更高效的方式来滚动大量数据项。RecyclerView 不仅可以像 ListView 那样垂直滚动还可以水平滚动甚至支持更复杂的布局如网格布局Grid Layout、瀑布流布局Staggered Grid Layout。
优点
ViewHolder对视图复用可以垂直滚动和水平滚动支持多种布局
列表布局RecyclerView
今天实现一个简单的RecyclerView效果如下图所示 一、创建RecyclerView并且在布局中绑定 androidx.recyclerview.widget.RecyclerViewandroid:idid/rlv_1android:layout_widthmatch_parentandroid:layout_heightmatch_parent /rlv1 findViewById(R.id.rlv_1)
二、实现RecyclerView单个item的布局
kotlin
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:background#ccccccandroid:paddingTop10dpandroid:paddingBottom10dpandroid:paddingRight20dpandroid:paddingLeft20dpImageViewandroid:idid/iv_iconandroid:layout_width50dpandroid:layout_height50dpandroid:layout_marginRight20dpandroid:srcdrawable/fangyuan /LinearLayoutandroid:layout_widthwrap_contentandroid:layout_heightmatch_parentandroid:layout_weight1android:orientationverticalTextViewandroid:idid/tv_nameandroid:layout_widthwrap_contentandroid:layout_height0dpandroid:layout_weight1android:text小白android:textColorcolor/blackandroid:textSize16sp /TextViewandroid:idid/tv_contentandroid:layout_weight1android:layout_widthwrap_contentandroid:layout_height0dpandroid:textSize14spandroid:textColor#666666android:text今天上班有摸鱼吗//LinearLayoutTextViewandroid:idid/tv_timeandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:gravityendandroid:layout_marginTop20dpandroid:textColor#999999android:textSize14spandroid:text2024年7月9日//LinearLayout三、给RecyclerView写一个对应的适配器Adapter
1.创建自定义的ViewHolder
class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {var ivIcon: ImageView? nullvar tvName: TextView? nullvar tvContent: TextView? nullvar tvTime: TextView? nullinit {ivIcon itemView.findViewById(R.id.iv_icon)tvName itemView.findViewById(R.id.tv_name)tvContent itemView.findViewById(R.id.tv_content)tvTime itemView.findViewById(R.id.tv_time)}}2.继承Adapter泛型使用我们自定义的ViewHolder
class MyAdapter(
): RecyclerView.AdapterMyViewHolder() {
}3.重写Adapter的三个方法
onCreateViewHolder
顾名思义创建我们自定义ViewHolder的实例也就是将item的布局作为itemView。ViewHolder是列表中每个item。 inflate三个参数 第一个为加载的布局id第二个为该布局的外部是否嵌套一层父布局不用就是null第三个是否给加载的布局添加一个root的外层容器。 override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {val view LayoutInflater.from(context).inflate(R.layout.item_list, parent, false)val myViewHolder MyViewHolder(view)return myViewHolder}getItemCount
item的条数 override fun getItemCount(): Int {return nameList.size}onBindViewHolder
通过onCreateViewHolder()绑定了布局之后接下来对数据和布局里面的控件进行绑定。 override fun onBindViewHolder(holder: MyViewHolder, position: Int) {holder.tvName?.text nameList[position]holder.tvContent?.text contentList[position]holder.tvTime?.text timeList[position]}四、RecyclerView绑定布局和适配器 private fun initData() {val nameList ArrayListString()val contentList ArrayListString()val timeList ArrayListString()for (i in 0..19) {nameList.add(方正)contentList.add(送外卖第${i}天)timeList.add(${1}月${i 1}日)}val adapter MyAdapter(this,nameList,contentList,timeList)val manager LinearLayoutManager(this)rlv1?.layoutManager managerrlv1?.adapter adapter}至此已经实现了开头的列表效果。
五、RecyclerView单个item点击事件
1.创建监听接口
interface OnItemClickListener {fun onItemClick(position: Int)
}2.Activity中实现接口并且传给Adapter
3.绑定事件中监听
holder.itemView.setOnClickListener{listener.onItemClick(position)}4.当点击时执行的是Activity中实现的方法