用kottlin实现adapter

优秀文章:一份关于 Java、Kotlin 与 Android 的学习笔记

一,实体类的编写,使用data关键字,就可以自动实现equals()、hashCode()、toString(),get(),set()方法

data class DateBean(
        var name : String ,
        val age :Int ,
        var money : Double,
        var isChecked : Boolean)

 

 

二,在Activity中使用. 创建对象不再需要new,

     1,var代表变量,val代表常量

     2,不需要findbyid,(通过apply plugin: 'kotlin-android-extensions'插件即可实现)

class KottlinActivity2 : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_kotlin2)
        initData()
        initUI()
    }

    val dateBeans = ArrayList<DateBean>()
    private fun initData() {
        for (i in 0..19) {
            val dateBean = DateBean("张三" + i, i, 10000.45,false)
            dateBeans.add(dateBean)
        }
    }

    private fun initUI() {
       
        val machinePointAdapter = MachinePointAdapter(dateBeans)
        recyclerView.adapter = machinePointAdapter
        //自己写的接口回调
        machinePointAdapter.setOnItemClickListener(object : MachinePointAdapter.OnClickItemListener {
            override fun onClickItemListener(dataBeans: List<DateBean>, position: Int) {
                Toast.makeText(applicationContext, dataBeans!![position].name, Toast.LENGTH_SHORT).show()
            }
        })
    }
}

 

 

三,适配器的实现

 

class MachinePointAdapter(dateBeans: ArrayList<DateBean>) : RecyclerView.Adapter<MachinePointAdapter.MachineHolder>() {


    private var listener: OnClickItemListener? = null
    val dataBeans = dateBeans;


    override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): MachineHolder {
        return MachineHolder(LayoutInflater.from(parent!!.context).inflate(R.layout.item_machine, null))
    }

    override fun onBindViewHolder(holder: MachineHolder?, position: Int) {
    
        holder?.itemView?.machine_number?.text = dataBeans[position].age.toString()
        holder?.itemView?.machine_address?.text = dataBeans[position].name
        holder?.itemView.setOnClickListener { listener?.onClickItemListener(dataBeans,position) }
    }



    override fun getItemCount(): Int {
        return if (dataBeans.size != 0) {
            dataBeans.size
        } else 0
    }

 inner class MachineHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {}
   

    interface OnClickItemListener {
        fun onClickItemListener(dataBeans: List<DateBean>, position: Int)
    }

    fun setOnItemClickListener(listener: OnClickItemListener?) {
        this.listener = listener
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值