封装基类如下:
import android.support.v7.widget.RecyclerView
import android.view.View
import java.util.ArrayList
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>()
var listener: OnItemClickerListener? = null
fun setOnItemClickListener(listener: OnItemClickerListener) {
this.listener = listener
}
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)
}
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
}
}