├── adapters ├── src │ └── main │ │ ├── AndroidManifest.xml │ │ ├── res │ │ └── values │ │ │ └── ids.xml │ │ └── java │ │ └── com │ │ └── wang │ │ └── adapters │ │ ├── container │ │ ├── bean │ │ │ ├── IContainerBean.kt │ │ │ └── ItemAdapterPositionInfo.kt │ │ ├── observer │ │ │ └── IContainerObserver.kt │ │ ├── item │ │ │ ├── OneContainerItemAdapter.kt │ │ │ └── BaseContainerItemAdapter.kt │ │ └── BaseContainerAdapter.kt │ │ ├── holder │ │ └── BaseViewHolder.kt │ │ ├── adapter │ │ ├── BaseAdapter.kt │ │ ├── BaseFragmentPager2Adapter.kt │ │ ├── BaseListCycleAdapter.kt │ │ ├── BaseListAdapter.kt │ │ ├── BaseExpandableAdapter.kt │ │ └── BaseMultiItemAdapter.kt │ │ ├── interfaces │ │ ├── IAdapter.kt │ │ ├── IHeaderFooterListAdapter.kt │ │ └── IListAdapter.kt │ │ ├── utils │ │ ├── Exts.kt │ │ ├── ViewHolderExt.kt │ │ ├── ViewExt.kt │ │ ├── ViewBindingHelper.kt │ │ ├── ViewGroupWrapUtils.kt │ │ └── BaseAdapterExt.kt │ │ └── helper │ │ └── ListAdapterHelper.kt └── build.gradle ├── app ├── src │ └── main │ │ ├── res │ │ ├── values │ │ │ └── strings.xml │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── layout │ │ │ ├── adapter_main_multiple_def.xml │ │ │ ├── adapter_main_header.xml │ │ │ ├── adapter_main_nes_item.xml │ │ │ ├── adapter_main_multiple_1.xml │ │ │ ├── adapter_main_multiple_0.xml │ │ │ ├── adapter_main_list.xml │ │ │ ├── activity_main.xml │ │ │ └── adapter_main_nes.xml │ │ └── drawable │ │ │ └── ic_launcher_background.xml │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── com │ │ └── wang │ │ └── example │ │ └── MainActivity.kt └── build.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── .gitignore ├── settings.gradle ├── gradle.properties ├── gradlew.bat ├── gradlew └── README.md /adapters/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | example 3 | 4 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weimingjue/BaseAdapter/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | *.apk 3 | *.zip 4 | local.properties 5 | *.hprof 6 | /captures 7 | ~$* 8 | .DS_Store 9 | .idea 10 | .gradle 11 | build -------------------------------------------------------------------------------- /adapters/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weimingjue/BaseAdapter/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weimingjue/BaseAdapter/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Aug 07 16:10:31 CST 2023 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip 5 | zipStoreBase=GRADLE_USER_HOME 6 | zipStorePath=wrapper/dists 7 | -------------------------------------------------------------------------------- /adapters/src/main/java/com/wang/adapters/container/bean/IContainerBean.kt: -------------------------------------------------------------------------------- 1 | package com.wang.adapters.container.bean 2 | 3 | import com.wang.adapters.container.item.BaseContainerItemAdapter 4 | 5 | /** 6 | * 你的最外层bean必须继承该接口 7 | */ 8 | interface IContainerBean { 9 | /** 10 | * 这个bean属于哪个adapter 11 | */ 12 | fun getBindAdapterClass(): Class> 13 | } -------------------------------------------------------------------------------- /app/src/main/res/layout/adapter_main_multiple_def.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/adapter_main_header.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/layout/adapter_main_nes_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | -------------------------------------------------------------------------------- /adapters/src/main/java/com/wang/adapters/holder/BaseViewHolder.kt: -------------------------------------------------------------------------------- 1 | package com.wang.adapters.holder 2 | 3 | import android.view.View 4 | import androidx.recyclerview.widget.RecyclerView 5 | import androidx.viewbinding.ViewBinding 6 | import com.wang.adapters.utils.findRootVbByTag 7 | 8 | class BaseViewHolder : RecyclerView.ViewHolder { 9 | constructor(itemView: View) : super(itemView) { 10 | _vb = itemView.findRootVbByTag() 11 | } 12 | 13 | constructor(vb: T) : super(vb.root) { 14 | this._vb = vb 15 | } 16 | 17 | private val _vb: T? 18 | val vb get() = _vb ?: throw IllegalArgumentException("没有找到ViewBinding,请确认是否使用了ViewBinding:$itemView") 19 | 20 | } -------------------------------------------------------------------------------- /app/src/main/res/layout/adapter_main_multiple_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/layout/adapter_main_multiple_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 18 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | google() 4 | mavenCentral() 5 | gradlePluginPortal() 6 | mavenLocal() 7 | maven { setUrl("https://maven.aliyun.com/repository/public") } 8 | maven { setUrl("https://maven.aliyun.com/repository/google") } 9 | maven { setUrl("https://jitpack.io") } 10 | } 11 | } 12 | dependencyResolutionManagement { 13 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) 14 | repositories { 15 | google() 16 | mavenCentral() 17 | mavenLocal() 18 | maven { setUrl("https://maven.aliyun.com/repository/public") } 19 | maven { setUrl("https://maven.aliyun.com/repository/google") } 20 | maven { setUrl("https://jitpack.io") } 21 | } 22 | } 23 | include ':app', ':adapters' 24 | -------------------------------------------------------------------------------- /app/src/main/res/layout/adapter_main_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | 18 |