我们在开发中总是要用到自定义适配器的,那么总是在用到的时候,直接继承显然已经不能满足我们去装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            }        })}}

以上就是所有的代码,希望对你有所帮助

更多相关文章

  1. Android锁屏与解锁广播状态监听
  2. Android:解决Camera.open()运行时异常RuntimeException
  3. Android隐藏标题栏和状态栏
  4. Android(安卓)DataBinding使用详解
  5. 第一行代码(三)
  6. Android(安卓)纯代码加入点击效果
  7. Android(安卓)ViewPager事件滑动监听修改
  8. 查看 android 现在有什么分支
  9. 代码论坛如何通过C的方式在android NDK下面查找本机的mac地址

随机推荐

  1. Android中文API(138) —— RemoteViews
  2. Android(安卓)SQLiteOpenHelper Sqlite数
  3. Android架构组件-Navigation的使用(一)
  4. android配置X86虚拟机
  5. Android兼容android7.0、及Android8.0以
  6. android中widgets的简单实现
  7. Android(安卓)EventBus使用,粘性事件post
  8. Android(安卓)中各种XML文件的作用
  9. Window下android 模拟器SD卡的使用方法
  10. android经典开源代码集合