recyclerview使用


我们新建一个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
}

搜索


文章作者: 小游
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小游 !
  目录