20230826 Parcelize

기메단·2023년 8월 26일
2

TIL

목록 보기
28/44

현 액티비티에서 다른 액티비티로 데이터를 전달하고 싶을 때 주로 intent putExtra()를 사용하는게 일반적인 방법이다. 하지만 데이터가 객체 형태인, data class를 보낼 때 일반적인 방법으로 보낸다면 컴파일 에러가 생긴다. 이게 어제 배운 내용이고 잠시 serializable 써봤었는데 Serializable의 구현하기 쉬운 장점과 Parcelable의 성능상 이점을 모두 가지고 있는 Parcelize로 다시 구현했다.

@build.gradle

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
    id 'kotlin-parcelize' 
}
Parcelize를 사용하기 위해 plugins에 id 'kotlin-parcelize' 추가 

@Data class

@Parcelize
data class MyItem(
    val aIcon:Int,
    val aName:String,
    val aAddress:String,
    val aPrice:String,
    val aLike:String,
    val aComment:String) : Parcelable {
}
@Parcelize 어노테이션과 Parcelable 인터페이스 추가 

@MainActivity

val mainItem = dataList[position]
                val intent = Intent(this@MainActivity, DetailActivity::class.java)
                intent.putExtra("mainItem", mainItem)
                startActivity(intent)
            }

@DetailActivity

 val getItem = intent.getParcelableExtra<MyItem>("mainItem")
        if(getItem != null) {
            binding.detailImageView.setImageResource(getItem.aIcon)
        }


정상적으로 잘가져와진다.

1개의 댓글

comment-user-thumbnail
2023년 8월 28일

오우 아직 안한 부분인데 이거 보면서 해봐야겠어요! 감사합니다!

답글 달기