From 6726974c61d5841ef2e0ab0262c5eda1adadcfcd Mon Sep 17 00:00:00 2001 From: bennyhuo Date: Thu, 17 Aug 2023 15:45:58 +0800 Subject: [PATCH] Fix generated View extensions. --- .../com/kanyun/kace/gradle/KaceGenerateAction.kt | 3 ++- .../main/java/com/kanyun/kace/KaceViewUtils.java | 14 ++++++++++++++ .../com/kanyun/kace/sample/demo/GenericView.kt | 13 +++++++++++++ .../com/kanyun/kace/sample/demo/MainActivity.kt | 3 +++ .../app/src/main/res/layout/activity_main.xml | 6 ++++++ 5 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 kace-runtime/src/main/java/com/kanyun/kace/KaceViewUtils.java create mode 100644 kace-sample/app/src/main/java/com/kanyun/kace/sample/demo/GenericView.kt diff --git a/kace-gradle-plugin/src/main/java/com/kanyun/kace/gradle/KaceGenerateAction.kt b/kace-gradle-plugin/src/main/java/com/kanyun/kace/gradle/KaceGenerateAction.kt index 9279af2..3bc68cd 100644 --- a/kace-gradle-plugin/src/main/java/com/kanyun/kace/gradle/KaceGenerateAction.kt +++ b/kace-gradle-plugin/src/main/java/com/kanyun/kace/gradle/KaceGenerateAction.kt @@ -93,12 +93,13 @@ abstract class KaceGenerateAction : WorkAction { writer.appendLine("package ${item.targetFilePackageName}.view") writer.newLine() writer.appendLine("import android.view.View") + writer.appendLine("import com.kanyun.kace.KaceViewUtils") writer.appendLine("import $namespace.R") writer.newLine() layoutNodeItems.forEach { item -> writer.appendLine("internal inline val View.${item.viewId}") - writer.appendLine(" get() = findViewById<${item.viewNameWithPackage}>(R.id.${item.viewId})") + writer.appendLine(" get() = KaceViewUtils.findViewById(this, R.id.${item.viewId}, ${item.viewNameWithPackage}::class.java)") writer.newLine() } } diff --git a/kace-runtime/src/main/java/com/kanyun/kace/KaceViewUtils.java b/kace-runtime/src/main/java/com/kanyun/kace/KaceViewUtils.java new file mode 100644 index 0000000..96998a0 --- /dev/null +++ b/kace-runtime/src/main/java/com/kanyun/kace/KaceViewUtils.java @@ -0,0 +1,14 @@ +package com.kanyun.kace; + +import android.view.View; + +/** + * Created by benny at 2023/8/17 15:28. + */ +public class KaceViewUtils { + + public static T findViewById(View view, int id, Class viewClass) { + return view.findViewById(id); + } + +} diff --git a/kace-sample/app/src/main/java/com/kanyun/kace/sample/demo/GenericView.kt b/kace-sample/app/src/main/java/com/kanyun/kace/sample/demo/GenericView.kt new file mode 100644 index 0000000..052bb1d --- /dev/null +++ b/kace-sample/app/src/main/java/com/kanyun/kace/sample/demo/GenericView.kt @@ -0,0 +1,13 @@ +package com.kanyun.kace.sample.demo + +import android.content.Context +import android.util.AttributeSet +import android.view.View + +/** + * Created by benny at 2023/8/17 15:37. + */ +class GenericView +@JvmOverloads constructor( + context: Context?, attrs: AttributeSet? = null, defStyleAttr: Int = 0 +) : View(context, attrs, defStyleAttr) \ No newline at end of file diff --git a/kace-sample/app/src/main/java/com/kanyun/kace/sample/demo/MainActivity.kt b/kace-sample/app/src/main/java/com/kanyun/kace/sample/demo/MainActivity.kt index 04ee02b..768e73a 100644 --- a/kace-sample/app/src/main/java/com/kanyun/kace/sample/demo/MainActivity.kt +++ b/kace-sample/app/src/main/java/com/kanyun/kace/sample/demo/MainActivity.kt @@ -17,6 +17,7 @@ package com.kanyun.kace.sample.demo import android.content.Intent +import android.graphics.Color import android.os.Bundle import android.util.Log import android.widget.Toast @@ -40,6 +41,8 @@ class MainActivity : AppCompatActivity(){ } button1.text2?.text = "test text" + + genericView.setBackgroundColor(Color.YELLOW) } override fun onDestroy() { diff --git a/kace-sample/app/src/main/res/layout/activity_main.xml b/kace-sample/app/src/main/res/layout/activity_main.xml index 60f0028..f6e2287 100644 --- a/kace-sample/app/src/main/res/layout/activity_main.xml +++ b/kace-sample/app/src/main/res/layout/activity_main.xml @@ -43,4 +43,10 @@ android:layout_width="match_parent" android:layout_height="100dp" /> + + \ No newline at end of file