kotlin BaseAdapter封装

1.新建 BaseRecyclerViewAdapter 类

abstract class BaseRecyclerViewAdapter<T, VH : RecyclerView.ViewHolder>(var mContext: Context) : RecyclerView.Adapter<VH>() {

    //ItemClick事件
    var mItemClickListener: OnItemClickListener<T>? = null

    var mItemLongClickListener: OnItemLongClickListener<T>? = null

    //数据集合
    var dataList: MutableList<T> = mutableListOf()
    /*
        设置数据
        Presenter处理过为null的情况,所以为不会为Null
     */
    fun setData(sources: MutableList<T>) {
        dataList = sources
        notifyDataSetChanged()
    }

    fun addAll(sources: MutableList<T>) {
        dataList.addAll(sources)
        notifyDataSetChanged()
    }

    fun clear() {
        dataList.clear()
        notifyDataSetChanged()
    }
    fun notifyDataSetChang() {
        notifyDataSetChanged()
    }

    override fun onBindViewHolder(holder: VH, position: Int) {

        holder.itemView.setOnClickListener {
            if (mItemClickListener != null)
                mItemClickListener!!.onItemClick(dataList[position], position)
        }

    }

    override fun getItemCount(): Int {
        return dataList.size
    }
    /*
        ItemClick事件声明
     */
    interface OnItemClickListener<in T> {
        fun onItemClick(item: T, position: Int)
    }

    interface OnItemLongClickListener<in T> {
        fun onItemLongClick(item: T, position: Int)
    }

    fun setOnItemClickListener(listener: OnItemClickListener<T>) {
        this.mItemClickListener = listener
    }

    fun setOnItemLongClickListener(listener: OnItemLongClickListener<T>) {
        this.mItemLongClickListener = listener
    }

}

使用 :


class BeadhousePopWindowAdapter(context: Context) : BaseRecyclerViewAdapter<String, BeadhousePopWindowAdapter.ViewHolder>(context) {
    var id = 0
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder = ViewHolder(LayoutInflater.from(mContext).inflate(R.layout.beadhouse_pop_adapter, null, false))

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        super.onBindViewHolder(holder, position)
        
        holder.itemView.checked.text = dataList[position]
        //接口回调
        holder.itemView.checked.setOnClickListener({
            id = position
            mItemClickListener!!.onItemClick(dataList.get(position),position)
        })
    }
    class ViewHolder(view: View) : androidx.recyclerview.widget.RecyclerView.ViewHolder(view)
}
/*  = object : 你的Adapter.接口回调名字*/
        beadhousePopWindowAdapter.mItemClickListener = object : BaseRecyclerViewAdapter.OnItemClickListener<String> {
            override fun onItemClick(item: String, position: Int) {
             beadhousePopWindowAdapter.notifyDataSetChanged()
                beadhousePopWindow2Adapter.setData(mutableList2[position].list)
            }
        }

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值