[Parcelize] intent에 Data class를 넣어서 전달하기

intent를 이용하여, 다른 액티비티에 데이터를 전달하는 상황이 올 경우가 있다.

배열을 넘겨줄 수도 있지만, 데이터 클래스를 이용하여 전달하는 방법이 있다.

 

parcelize 사용을 위해 plugins에 추가를 해준다.

 

plugins{
	id "kotlin-parcelize"
}

 

그리고 전달하고자 하는 데이터 클래스를 정의할 때, 다음과 같이 정의를 해준다 (예시)

@Parcelize
data class NeighborLineData(
    val line : String,
    var left : String? = null,
    val center : String,
    var right : String? = null
) : Parcelable

 

전달은 다음과 같이 하면 된다.

val nlData = NeighborLineData(center = datas[adapterPosition].subwayStation, line = line)
intent.putExtra("neighbor", nlData)

데이터를 받는 쪽은 아래와 같다.

nlData = intent.getParcelableExtra("neighbor")!!