我们新建一个adapt
/**
* @author 小游
* 这里是闹钟的adapt,里面主要是一个recyclerview的布局
* 我们这里自己定义了一个adapt类,构造函数只需要传list数据
* RecyclerView.Adapter里面的泛型需要传递一个holder对象(需要自己继承viewholder类)
*/
class AlarmAdapt(private val alarms:List<Alarm>) : RecyclerView.Adapter<AlarmAdapt.MyHolder>(){
/**
* 这个holder就是视图的映射,我们这个类里面主要存放视图里面所有的控件信息
*/
class MyHolder(itemView: View?): RecyclerView.ViewHolder(itemView!!){
val title: TextView = itemView?.findViewById(R.id.alarm_time)!!
val dec: TextView = itemView?.findViewById(R.id.alarm_dec)!!
}
/**
* 这个主要用于映射item文件
*/
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyHolder {
return MyHolder(LayoutInflater.from(parent.context).inflate(R.layout.item_alarm, parent, false))
}
/**
* 这里就是用于修改每个位置的holder文件,holder就是我们自己定义的myHolder类
*/
override fun onBindViewHolder(holder: MyHolder, position: Int) {
holder.title.text = alarms[position].title
holder.dec.text = alarms[position].dec
}
/**
* 这个用于设置列表的数目
*/
override fun getItemCount() = alarms.size
}
然后我们指定布局
// 初始化一个viewManager,使用的是线性布局,就是直接一列列的显示
val viewManager = LinearLayoutManager(this.context)
// 初始化闹钟list
val alarms = listOf(
Alarm("第二个闹钟", Date(), "这个是内容"),
Alarm("第一个闹钟", Date(), "这个是内容"),
Alarm("第三个闹钟", Date(), "这个是内容"),
Alarm("第四个闹钟", Date(), "这个是内容"),
Alarm("第五个闹钟", Date(), "这个是内容"),
Alarm("第六个闹钟", Date(), "这个是内容")
)
// 初始化adapter
val viewAdapt = AlarmAdapt(alarms)
// 这里我们直接给recycleview赋值 这个{}类似于lambda表达式
alarm_list.apply {
// 这个是设置内容中的内容不要更改RecyclerView的布局大小
setHasFixedSize(true)
// 这里设置layoutmanage
layoutManager = viewManager
// 这里设置adapt信息
adapter = viewAdapt
}
搜索