Closed cheewr85 closed 2 years ago
여기서 internet에서 data를 받아와 data class에 담아서 저장해뒀음 그리고 이 데이터에 대해서 ViewModel을 통해서 데이터를 처리했음
하지만 여기서 navigation에서 argument로 값을 넘겨줄 때 data class를 접근해서 하는것이 아닌 입력한 값에 대해서 넘겨받고 처리해야함 즉, 이때 데이터를 객체를 직렬화하여서 보내줘야함, 근데 8.3 이전 처리에선 이런일이 없어서 data class의 별도로 처리를 하지 않았음
전형적인 방식으로 직렬화 처리에 있어서 Serializable과 Parcelable을 통해서 직렬화함
그러면 이 데이터를 직렬화를 통해서 보낼 수 있고 이를 받아서 역직렬화를 하여서 해당 객체의 데이터를 사용할 수 있음
여기서 data class를 만드는데 두 가지 방식으로 내부구현을 해야하는데 코틀린에서 이를 더 단순하게 처리해줌
바로 어노테이션을 통해서 이를 처리해주는 것인데 @Parcelize
임 이를 사용하면 Parcelable과 관련된 코드를 작성한 것 같이 작동함 즉, 직접 구현해서 처리하는 불필요한 작업을 할 필요없이 구현되어 지는 것임
그럼 이 어노테이션을 쓰고 Parcelable을 상속받은것만으로도 직렬화 역직렬화 처리가 알아서 되는 것임
@Parcelize
data class MarsProperty (
val id: String,
@Json(name = "img_src") val imgSrcUrl: String,
val type: String,
val price: Double) : Parcelable {
<argument
android:name="selectedProperty"
app:argType="com.example.android.marsrealestate.network.MarsProperty"
/>
[질문]
Parcelable과 데이터 처리에 있어서 직렬화 관련해서 정리해보기