현 액티비티에서 다른 액티비티로 데이터를 전달하고 싶을 때 주로 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)
}
정상적으로 잘가져와진다.
오우 아직 안한 부분인데 이거 보면서 해봐야겠어요! 감사합니다!