From 61734f7b7c5ff5e2354eaa5faed1fbea130391f7 Mon Sep 17 00:00:00 2001 From: Eonji-sw Date: Sat, 30 Dec 2023 02:14:27 +0900 Subject: [PATCH 1/4] =?UTF-8?q?[add]:=20kapt=20apply=20=EB=B0=8F=20jvm=20?= =?UTF-8?q?=EB=B2=84=EC=A0=84=20=EC=88=98=EC=A0=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index a6e7cf4..f4608f2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,8 @@ plugins { id 'org.jetbrains.kotlin.plugin.serialization' version '1.8.20' } +apply plugin: 'kotlin-kapt' + Properties properties = new Properties() properties.load(project.rootProject.file('local.properties').newDataInputStream()) @@ -31,11 +33,11 @@ android { } } compileOptions { - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 } kotlinOptions { - jvmTarget = '11' + jvmTarget = '17' } buildFeatures { viewBinding true @@ -68,6 +70,7 @@ dependencies { implementation("com.squareup.okhttp3:logging-interceptor") implementation 'com.github.bumptech.glide:glide:4.12.0' + annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0' implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2" implementation 'androidx.core:core-ktx:1.8.0' From fd217f95291807cd5f5010c534fe907a4c9059e2 Mon Sep 17 00:00:00 2001 From: Eonji-sw Date: Sat, 30 Dec 2023 02:15:02 +0900 Subject: [PATCH 2/4] =?UTF-8?q?[ui]:=20user=20image=20BindingAdaptor=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/item_friend.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/layout/item_friend.xml b/app/src/main/res/layout/item_friend.xml index 70247fc..3322595 100644 --- a/app/src/main/res/layout/item_friend.xml +++ b/app/src/main/res/layout/item_friend.xml @@ -12,7 +12,8 @@ android:layout_marginVertical="15dp" android:layout_marginStart="25dp" android:scaleType="centerCrop" - android:src="@drawable/kakao_profile_sky" + tools:src="@drawable/kakao_profile_sky" + imageUrl="@{user.avatar}" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintDimensionRatio="1" app:layout_constraintStart_toStartOf="parent" From 99a1327d64403c8c5e9c868b471c46b898991b91 Mon Sep 17 00:00:00 2001 From: Eonji-sw Date: Sat, 30 Dec 2023 02:15:19 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[feat]:=20user=20image=20BindingAdaptor=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dosopttemplate/data/adaptor/UserAdaptor.kt | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/sopt/dosopttemplate/data/adaptor/UserAdaptor.kt b/app/src/main/java/org/sopt/dosopttemplate/data/adaptor/UserAdaptor.kt index 6e07dac..4c8e179 100644 --- a/app/src/main/java/org/sopt/dosopttemplate/data/adaptor/UserAdaptor.kt +++ b/app/src/main/java/org/sopt/dosopttemplate/data/adaptor/UserAdaptor.kt @@ -3,8 +3,10 @@ package org.sopt.dosopttemplate.data.adaptor import android.content.Context import android.view.LayoutInflater import android.view.ViewGroup +import androidx.databinding.BindingAdapter import androidx.recyclerview.widget.RecyclerView import com.bumptech.glide.Glide +import com.google.android.material.imageview.ShapeableImageView import org.sopt.dosopttemplate.databinding.ItemFriendBinding import org.sopt.dosopttemplate.server.auth.response.ResponseUserListDataDto @@ -35,10 +37,20 @@ class UserViewHolder(private val binding: ItemFriendBinding) : RecyclerView.ViewHolder(binding.root) { private val context: Context = binding.root.context fun onBind(user: ResponseUserListDataDto) { - Glide.with(context) - .load(user.avatar).into(binding.ivItemImage) - + loadImage(binding.ivItemImage, user.avatar) binding.tvItemName.text = user.firstName binding.tvItemMessage.text = user.email } + + companion object { + @JvmStatic + @BindingAdapter("imageUrl") + fun loadImage(view: ShapeableImageView, imageUrl: String?) { + imageUrl?.let { + Glide.with(view.context) + .load(it) + .into(view) + } + } + } } \ No newline at end of file From a95bfc75328f3ab6f4c51cbcf060bc4f9a2c4e6f Mon Sep 17 00:00:00 2001 From: Eonji-sw Date: Sat, 30 Dec 2023 02:36:36 +0900 Subject: [PATCH 4/4] =?UTF-8?q?[comment]:=20user=20image=20BindingAdaptor?= =?UTF-8?q?=20=EC=A3=BC=EC=84=9D=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sopt/dosopttemplate/data/adaptor/UserAdaptor.kt | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/sopt/dosopttemplate/data/adaptor/UserAdaptor.kt b/app/src/main/java/org/sopt/dosopttemplate/data/adaptor/UserAdaptor.kt index 4c8e179..88ab9bb 100644 --- a/app/src/main/java/org/sopt/dosopttemplate/data/adaptor/UserAdaptor.kt +++ b/app/src/main/java/org/sopt/dosopttemplate/data/adaptor/UserAdaptor.kt @@ -42,11 +42,20 @@ class UserViewHolder(private val binding: ItemFriendBinding) : binding.tvItemMessage.text = user.email } + //기존 뷰들에 없는 새로운 xml 속성을 연결하는 기능 메소드를 가지는 객체 + //보통 static 메소드를 가진 class로 사용 + //static 메소드를 가져야하기 때문에 class면 안됨 object로 명시 companion object { - @JvmStatic - @BindingAdapter("imageUrl") + //객체가 단 한마리 밖에 없는 애 : 싱글턴 패턴!! + + + @JvmStatic //static 만드는 어노테이션 + // 1) 이미지뷰에 새로운 xml 속성 만들기 + // [속성명 : imageUrl ] + @BindingAdapter("imageUrl") //어노테이션 해독기 필요 - 빌드그래이들에 기능 추가 필요! fun loadImage(view: ShapeableImageView, imageUrl: String?) { imageUrl?.let { + //메소드 명은 내 맘대로 다만! 파라미터 (어떤뷰에 주는지(뷰타입), 어떤 값인지(속성값)) 가 중요!! Glide.with(view.context) .load(it) .into(view)