RecyclerView.Adapter基类封装-Kotlin版本

封装基类如下:

import android.support.v7.widget.RecyclerView
import android.view.View
import java.util.ArrayList


/**
 * content:
 * @author 程前
 * @blog: https://blog.csdn.net/ch1406285246
 * modifyNote:
 */
abstract class BaseAdapter<T, V : RecyclerView.ViewHolder>() : RecyclerView.Adapter<V>() {

    companion object {
        const val REFRESH = 20010
        const val LOAD = 20011
    }

    private var data = ArrayList<T>()
    /**
     * onClick onLongClick callback
     */
    var listener: OnItemClickerListener? = null


    /**
     * set onclick & onLongClick callback
     * @param listener
     */
    fun setOnItemClickListener(listener: OnItemClickerListener) {
        this.listener = listener
    }

    /**
     * bind view holder
     * @param holder
     * @param position
     */
    override fun onBindViewHolder(holder: V, position: Int) {
        if (listener != null) {
            holder.itemView.setOnClickListener { v -> listener!!.onClick(v, position) }
            holder.itemView.setOnLongClickListener { v -> listener!!.onLongClick(v, position) }
        }
        BindViewHolder(holder, position)
    }

    /**
     * get item count
     *
     * @return
     */
    override fun getItemCount(): Int {
        return data.size
    }

    abstract fun BindViewHolder(holder: V, position: Int)

    fun getItem(position: Int) = data[position]

    fun addData(dataList: List<T>, refreshType: Int) {
        if (refreshType == REFRESH)
            this.data.clear()
        this.data.addAll(dataList)
        notifyDataSetChanged()
    }

    interface OnItemClickerListener {
        fun onClick(v: View, position: Int)

        fun onLongClick(v: View, position: Int): Boolean
    }

}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值