diff --git a/app/build.gradle b/app/build.gradle index aa45fbcba..7f1261eb1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,6 +2,7 @@ plugins { id 'com.android.application' id 'kotlin-android' id 'kotlin-kapt' + id 'com.google.devtools.ksp' } android { @@ -28,12 +29,11 @@ android { } compileOptions { -// kotlinOptions.freeCompilerArgs += ["-Xjvm-default=all"] - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 } kotlinOptions { - jvmTarget = "11" + jvmTarget = "17" } buildFeatures { @@ -49,14 +49,14 @@ dependencies { implementation 'com.google.android.material:material:1.8.0' implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.appcompat:appcompat:1.6.1' - implementation "androidx.core:core-ktx:1.9.0" + implementation "androidx.core:core-ktx:1.10.1" - implementation 'com.kyleduo.switchbutton:library:2.0.0' + implementation 'com.kyleduo.switchbutton:library:2.1.0' implementation 'androidx.recyclerview:recyclerview:1.3.0' implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0" implementation("com.squareup.moshi:moshi:1.14.0") - kapt("com.squareup.moshi:moshi-kotlin-codegen:1.14.0") + ksp("com.squareup.moshi:moshi-kotlin-codegen:1.14.0") implementation 'com.jaredrummler:material-spinner:1.3.1' } diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/itemclick/ItemClickActivity.kt b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/itemclick/ItemClickActivity.kt index 1fcdd5dd4..ae3d000d9 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/itemclick/ItemClickActivity.kt +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/itemclick/ItemClickActivity.kt @@ -65,6 +65,7 @@ class ItemClickActivity : BaseViewBindingActivity Tips.show("onItemChildClick: add $position") + adapter.removeAt(position) } // 设置子 view 长按事件 diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/itemclick/adapter/ItemClickAdapter.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/itemclick/adapter/ItemClickAdapter.java index 3e328d467..5af7af993 100755 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/itemclick/adapter/ItemClickAdapter.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/itemclick/adapter/ItemClickAdapter.java @@ -83,7 +83,7 @@ public ItemChildLongClickVH(@NonNull ViewGroup parent) { public ItemClickAdapter(List data) { super(data); - addItemType(ClickEntity.CLICK_ITEM_VIEW, ItemViewVH.class, new OnMultiItemAdapterListener() { + addItemType(ClickEntity.CLICK_ITEM_VIEW, new OnMultiItemAdapterListener() { @NonNull @Override @@ -94,7 +94,14 @@ public ItemViewVH onCreate(@NonNull Context context, @NonNull ViewGroup parent, @Override public void onBind(@NonNull ItemViewVH holder, int position, ClickEntity item) { } - }).addItemType(ClickEntity.CLICK_ITEM_CHILD_VIEW, ItemChildVH.class, new OnMultiItemAdapterListener() { + + @Override + public void onViewDetachedFromWindow(@NonNull RecyclerView.ViewHolder holder) { + if (holder instanceof ItemViewVH) { + System.out.println("---------------------- >> onViewDetachedFromWindow ItemViewVH"); + } + } + }).addItemType(ClickEntity.CLICK_ITEM_CHILD_VIEW, new OnMultiItemAdapterListener() { @NonNull @Override @@ -105,7 +112,7 @@ public ItemChildVH onCreate(@NonNull Context context, @NonNull ViewGroup parent, @Override public void onBind(@NonNull ItemChildVH holder, int position, ClickEntity item) { } - }).addItemType(ClickEntity.LONG_CLICK_ITEM_VIEW, ItemLongClickVH.class, new OnMultiItemAdapterListener() { + }).addItemType(ClickEntity.LONG_CLICK_ITEM_VIEW, new OnMultiItemAdapterListener() { @NonNull @Override @@ -116,7 +123,7 @@ public ItemLongClickVH onCreate(@NonNull Context context, @NonNull ViewGroup par @Override public void onBind(@NonNull ItemLongClickVH holder, int position, ClickEntity item) { } - }).addItemType(ClickEntity.LONG_CLICK_ITEM_CHILD_VIEW, ItemChildLongClickVH.class, new OnMultiItemAdapterListener() { + }).addItemType(ClickEntity.LONG_CLICK_ITEM_CHILD_VIEW, new OnMultiItemAdapterListener() { @NonNull @Override @@ -130,7 +137,6 @@ public void onBind(@NonNull ItemChildLongClickVH holder, int position, ClickEnti }).onItemViewType(new OnItemViewTypeListener() { @Override public int onItemViewType(int position, @NonNull List list) { - System.out.println("------------------------>> " + position); return list.get(position).getItemType(); } }); diff --git a/build.gradle b/build.gradle index 5ab88761d..98e1f01c4 100644 --- a/build.gradle +++ b/build.gradle @@ -1,13 +1,9 @@ -buildscript { - ext.kotlin_version = '1.8.21' - repositories { - google() - mavenCentral() - } - dependencies { - classpath 'com.android.tools.build:gradle:7.4.2' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlin_version}" - } + +plugins { + id 'com.android.application' version '8.0.1' apply false + id 'com.android.library' version '8.0.1' apply false + id 'org.jetbrains.kotlin.android' version '1.8.21' apply false + id 'com.google.devtools.ksp' version '1.8.21-1.0.11' apply false } task clean(type: Delete) { diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 876a02612..35b91c217 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Nov 14 15:55:02 CST 2021 +#Mon May 29 14:19:55 CST 2023 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip distributionPath=wrapper/dists -zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/library/src/main/java/com/chad/library/adapter/base/BaseMultiItemAdapter.kt b/library/src/main/java/com/chad/library/adapter/base/BaseMultiItemAdapter.kt index 57eb9f37c..7ee6cce9f 100644 --- a/library/src/main/java/com/chad/library/adapter/base/BaseMultiItemAdapter.kt +++ b/library/src/main/java/com/chad/library/adapter/base/BaseMultiItemAdapter.kt @@ -4,6 +4,7 @@ import android.content.Context import android.util.SparseArray import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView +import com.chad.library.R import java.lang.ref.WeakReference /** @@ -25,7 +26,9 @@ abstract class BaseMultiItemAdapter(items: List = emptyList()) : val listener = typeViewHolders.get(viewType) ?: throw IllegalArgumentException("ViewType: $viewType not found onViewHolderListener,please use addItemType() first!") - return listener.onCreate(parent.context, parent, viewType) + return listener.onCreate(parent.context, parent, viewType).apply { + itemView.setTag(R.id.BaseQuickAdapter_key_multi, listener) + } } override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int, item: T?) { @@ -48,21 +51,17 @@ abstract class BaseMultiItemAdapter(items: List = emptyList()) : /** * Call this function to add multiTypeItems. * 调用此方法,设置多布局 - * @param type Int + * @param itemViewType Int * @param listener Int */ - inline fun addItemType( - type: Int, listener: OnMultiItemAdapterListener - ) = addItemType(type, V::class.java, listener) - fun addItemType( - type: Int, holderClazz: Class, listener: OnMultiItemAdapterListener + itemViewType: Int, listener: OnMultiItemAdapterListener ) = apply { if (listener is OnMultiItem) { listener.weakA = WeakReference(this) } typeViewHolders.put( - type, listener as OnMultiItemAdapterListener + itemViewType, listener as OnMultiItemAdapterListener ) } @@ -83,28 +82,25 @@ abstract class BaseMultiItemAdapter(items: List = emptyList()) : override fun onViewAttachedToWindow(holder: RecyclerView.ViewHolder) { super.onViewAttachedToWindow(holder) - val realViewType = getItemViewType(holder.bindingAdapterPosition, items) - typeViewHolders.get(realViewType)?.onViewAttachedToWindow(holder) + (holder.itemView.getTag(R.id.BaseQuickAdapter_key_multi) as OnMultiItemAdapterListener) + .onViewAttachedToWindow(holder) } override fun onViewDetachedFromWindow(holder: RecyclerView.ViewHolder) { super.onViewDetachedFromWindow(holder) - - val realViewType = getItemViewType(holder.bindingAdapterPosition, items) - typeViewHolders.get(realViewType)?.onViewDetachedFromWindow(holder) + (holder.itemView.getTag(R.id.BaseQuickAdapter_key_multi) as OnMultiItemAdapterListener) + .onViewDetachedFromWindow(holder) } override fun onViewRecycled(holder: RecyclerView.ViewHolder) { super.onViewRecycled(holder) - - val realViewType = getItemViewType(holder.bindingAdapterPosition, items) - typeViewHolders.get(realViewType)?.onViewRecycled(holder) + (holder.itemView.getTag(R.id.BaseQuickAdapter_key_multi) as OnMultiItemAdapterListener) + .onViewRecycled(holder) } override fun onFailedToRecycleView(holder: RecyclerView.ViewHolder): Boolean { - val realViewType = getItemViewType(holder.bindingAdapterPosition, items) - return typeViewHolders.get(realViewType)?.onFailedToRecycleView(holder) - ?: super.onFailedToRecycleView(holder) + return (holder.itemView.getTag(R.id.BaseQuickAdapter_key_multi) as OnMultiItemAdapterListener) + .onFailedToRecycleView(holder) } override fun isFullSpanItem(itemType: Int): Boolean { @@ -144,7 +140,7 @@ abstract class BaseMultiItemAdapter(items: List = emptyList()) : * @constructor Create empty On multi item */ abstract class OnMultiItem : OnMultiItemAdapterListener { - internal var weakA : WeakReference>? = null + internal var weakA: WeakReference>? = null val adapter: BaseMultiItemAdapter? get() = weakA?.get() diff --git a/library/src/main/res/values/ids.xml b/library/src/main/res/values/ids.xml index 972baf303..b273000ab 100644 --- a/library/src/main/res/values/ids.xml +++ b/library/src/main/res/values/ids.xml @@ -4,4 +4,6 @@ + + \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 3839749f2..cda4d51d2 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,9 +1,16 @@ +pluginManagement { + repositories { + gradlePluginPortal() + google() + mavenCentral() + } +} + dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() - jcenter() // Warning: this repository is going to shut down soon } }