Android(安卓)自定义kotlin中BaseRecyclerViewAdapter
16lz
2021-01-26
我们在开发中总是要用到自定义适配器的,那么总是在用到的时候,直接继承显然已经不能满足我们去装13的心情了,那么直接上码吧
下面是BaseRecyclerViewAdapter.kt的源码内容:
abstract class BaseRecyclerViewAdpater<T, VH: RecyclerView.ViewHolder>(var mContext: Context): RecyclerView.Adapter<VH>() {var mItemClickListener: OnItemClickListener<T>? = nullvar dataList: MutableList<T> = mutableListOf()fun setData(source: MutableList<T>) { dataList = source notifyDataSetChanged() } fun addData(source: MutableList<T>) { dataList.addAll(source) notifyDataSetChanged() }override fun onBindViewHolder(holder: VH, position: Int) {holder.itemView.setOnClickListener {if (null != mItemClickListener) {mItemClickListener!!.onItemClick(dataList[position], position)}}}override fun getItemCount(): Int { return dataList.size }/** * Item点击事件 */interface OnItemClickListener<in T> { fun onItemClick(item: T, position: Int) }/** * 设置监听 */fun setOnItemClickListener(listener: OnItemClickListener<T>) { this.mItemClickListener = listener }}
具体的使用方法
UserListAdapter.kt
class UserListAdapter(var context: Context): BaseRecyclerViewAdpater<UserInfo, UserListAdapter.UserHolder>(context) {override fun onCreateViewHolder(parent: ViewGroup, position: Int): UserHolder { val view = LayoutInflater.from(mContext).inflate(R.layout.item_user_info, parent, false) return UserHolder(view) }override fun onBindViewHolder(holder: UserHolder, position: Int) { super.onBindViewHolder(holder, position) val model = dataList[position] holder.itemView.txtItemUserName.text = model.userName }class UserHolder(view: View): RecyclerView.ViewHolder(view)}
业务逻辑代码
MainActivity.kt
class MainActivity: AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)var adapter = UserListAdapter(this)adapter.setOnItemClickListener(object : BaseRecyclerViewAdapter.OnItemClickListener<UserInfo> { override fun onItemClick(item: UserInfo, position: Int) { // what you want to do } })}}
以上就是所有的代码,希望对你有所帮助
更多相关文章
- Android锁屏与解锁广播状态监听
- Android:解决Camera.open()运行时异常RuntimeException
- Android隐藏标题栏和状态栏
- Android(安卓)DataBinding使用详解
- 第一行代码(三)
- Android(安卓)纯代码加入点击效果
- Android(安卓)ViewPager事件滑动监听修改
- 查看 android 现在有什么分支
- 代码论坛如何通过C的方式在android NDK下面查找本机的mac地址