Kotlin学习第二天----------------写一个简单的RecycleView加点击事件

Activity部分,xml部分就是一个简单的RecycleView

var mData  = ArrayList<String>()
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    //查找控件
    val recycleView = findViewById<RecyclerView>(R.id.recyCleview)
    //设置排列方式
    recycleView.layoutManager = LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false)
    //给集合添加数据
    getDate()
    val adapter = KotlinRecycleAdater(mData,this)
    recycleView.adapter = adapter
    //RecycleView的点击事件
    adapter!!.setOnKotlinItemClickListener(object : KotlinRecycleAdater.IKotlinItemClickListener{
        override fun onItemClickListener(position: Int) {
            Toast.makeText(applicationContext,mData!![position],Toast.LENGTH_SHORT).show()
        }

    })
}

private fun getDate(){
    for(i in 0..20){
        mData!!.add("我是数据"+i)
    }

}

然后是Adapter部分,切记创建时候要创建Kotlin的.kt文件,不能创建之前的.java文件,

不然没法用kotlin,Adapter里面也就是一个TextView

class KotlinRecycleAdater() : RecyclerView.Adapter<KotlinRecycleAdater.MyViewHolder>(){
    private var list : ArrayList<String>? = null
    private var context : Context? = null
    private var itemOnClick : IKotlinItemClickListener? = null

    constructor(list : ArrayList<String>?,context: Context) : this() {
        this.list = list
        this.context = context
    }

    override fun onCreateViewHolder(p0: ViewGroup, p1: Int): MyViewHolder {
        var view = LayoutInflater.from(context).inflate(R.layout.recycleview_item,p0,false)
        return MyViewHolder(view)
    }

    override fun getItemCount(): Int {
        return list?.size!!
    }

    override fun onBindViewHolder(p0: MyViewHolder, p1: Int) {
        p0?.text?.text = list!![p1]
        p0.itemView.setOnClickListener{
            itemOnClick!!.onItemClickListener(p1)
        }
    }

    class MyViewHolder(itemView : View) : RecyclerView.ViewHolder(itemView){
        var text : TextView = itemView.findViewById(R.id.text_item)
    }

    //自定义接口
    interface IKotlinItemClickListener {
        fun onItemClickListener(position: Int)
    }

    // 提供set方法
    fun setOnKotlinItemClickListener(itemClickListener: IKotlinItemClickListener) {
        this.itemOnClick = itemClickListener
    }

}

这样一个RecycleView就完成了,要多low有多low哈哈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值