android的adapter中使用ViewBinding和DataBinding

在开始转入jetpack的时候分部弄一下,看一下差距

(1)、最普通版本 不用ViewBinding和DataBinding

class RecordSettingAdapter : RecyclerView.Adapter<RecordSettingAdapter.MyViewHolder>() {
    private var statusBeans: MutableList<PressureRecordBean> = ArrayList()
    fun setList(statusBeans: MutableList<PressureRecordBean>) {
        this.statusBeans = statusBeans
        notifyDataSetChanged()
    }
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
        val inflate = LayoutInflater.from(parent.context)
            .inflate(R.layout.pressure_record_item, parent, false)
        return MyViewHolder(inflate)
    }
    override fun getItemCount(): Int {
        return statusBeans.size
    }
    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        var bean: PressureRecordBean = statusBeans[position]
        holder.bind(bean)
    }
    class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        private val tireNo: TextView = itemView.findViewById(R.id.tire_no)
        private val tireOld: TextView = itemView.findViewById(R.id.tire_old)
        private val tireNew: TextView = itemView.findViewById(R.id.tire_new)
        fun bind(bean: PressureRecordBean) {
            tireNo.text = bean.tire_no
            tireOld.text = bean.old_pressure
            tireNew.text = bean.set_pressure
        }
    }
}

(2)、普通版本加入ViewBinding

class RecordSettingAdapter : RecyclerView.Adapter<RecordSettingAdapter.MyViewHolder>() {
    private var statusBeans: MutableList<PressureRecordBean> = ArrayList()
    fun setList(statusBeans: MutableList<PressureRecordBean>) {
        this.statusBeans = statusBeans
        notifyDataSetChanged()
    }
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
        val binding =
            PressureRecordItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)
        return MyViewHolder(binding)
    }
    override fun getItemCount(): Int {
        return statusBeans.size
    }
    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        var bean: PressureRecordBean = statusBeans[position]
        holder.bind(bean)
    }
    class MyViewHolder(private var bining: PressureRecordItemBinding) :
        RecyclerView.ViewHolder(bining.root) {
        fun bind(bean: PressureRecordBean) {
            bining.tireNo.text = bean.tire_no
            bining.tireOld.text = bean.old_pressure
            bining.tireNew.text = bean.set_pressure
        }
    }
}

(3)、普通版本加入ViewBinding后再加入DataBinding

class RecordSettingAdapter : RecyclerView.Adapter<RecordSettingAdapter.MyViewHolder>() {
    private var statusBeans: MutableList<PressureRecordBean> = ArrayList()
    fun setList(statusBeans: MutableList<PressureRecordBean>) {
        this.statusBeans = statusBeans
        notifyDataSetChanged()
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
        val binding =       PressureRecordItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)
        return MyViewHolder(binding)
    }
    override fun getItemCount(): Int {
        return statusBeans.size
    }
    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        var bean: PressureRecordBean = statusBeans[position]
        holder.bind(bean)
    }
    class MyViewHolder(private var bining: PressureRecordItemBinding) :
        RecyclerView.ViewHolder(bining.root) {
        fun bind(bean: PressureRecordBean) {
            bining.bean=bean
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容