# RegisterAdapter **Repository Path**: aracoix/register-adapter ## Basic Information - **Project Name**: RegisterAdapter - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2021-09-28 - **Last Updated**: 2023-05-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RegisterAdapter 使用说明 使用时可只使用一个adapter
1.导入jitpack `maven { url 'https://jitpack.io' }` 2.声明 > implementation 'com.gitee.aracoix:register-adapter:1.0.3' `val adapter = RegisterAdapter()` 3.Gradle中开启viewbinding 或者 databinding 低版本gradle ```groovy dataBinding { enabled = true } viewBinding { enabled = true } ``` 高版本gradle ```groovy buildFeatures{ viewBinding = true dataBinding = true } ``` 使用dataBinding 需要`'kotlin-kapt'` 支持 3.写一个布局 `item_loading_view_holder.xml` ```xml ``` 4.开始写viewholder `LoadingViewHolder.kt` ```kotlin class LoadingBean class LoadingViewHolder(override val mBinding: ItemLoadingViewHolderBinding) :BaseRegisterViewHolder(mBinding) { override fun bindData(data: LoadingBean, payloads: List) { (mBinding.progress.drawable as AnimationDrawable).start() } } ``` `FooterViewHolder.kt` ```kotlin data class FooterBean(val desc: Int = R.string.common_list_no_more, val height: Int = 40.dp) class FooterViewHolder(override val mBinding: ItemFooterViewHolderBinding) : BaseRegisterViewHolder(mBinding) { override fun bindData(data: FooterBean, payloads: List) { mBinding.loadingEndText.setText(data.desc) val layoutParams = mBinding.llFooter.layoutParams layoutParams.height = data.height mBinding.llFooter.layoutParams = layoutParams addMultiClickListener(mBinding.root) } } ``` 5.绑定adapter,注意holder注册时 按照 bean+binding 为key,如果相同的话只有后注册的生效 ```kotlin recyclerView.layoutManager = LinearLayoutManager(requireContext()) adapter.register(LoadingViewHolder::class.java) adapter.register(FooterViewHolder::class.java) //一对多注册 adapter.multiRegister(object : MultiRegister() { override fun pickItem(position:Int,data: Bean): RegisterItem { return when (data.type) { 1 -> RegisterItem(ViewHolderA::class.java) else -> RegisterItem(ViewHolderB::class.java) } } }) adapter.registerTo(recyclerView) adapter.loadData(LoadingBean()) adapter.loadData((0..100).map{Bean()}) adapter.loadData(FooterBean()) ``` 删除全部数据 `adapter.removeAllData()` 移除某个数据 ```kotlin adapter.removeData(data) adapter.removeData(index) ```
另外可 将viewholder 添加到viewgroup 上使用 ```kotlin LoadingViewHolder::class.holder2View(viewgroup,LoadingBean()) ```