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)
}
}