# 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())
```