Kotlin parcel.readList 에서 list 패싱하기

조회수 866회

중요 질문

  • Android Studio에서 intent로 custom class를 넘기고 싶어서 parcelable class를 상속받았습니다.
  • parcel.readInt(), parcel.writeInt(value) 등 기본형은 넘어가는데 list가 안넘어가네요...
  • parcel.readList(~~)에서 에러가 납니다. Read-Only를 하지 않은 것 같은데 왜 자꾸 했다고 할까요... java.lang.UnsupportedOperationException: Operation is not supported for read-only collection
추가 질문
  • classLoader라는 게 class의 ADT(?)를 넘겨주는 건가요?
  • 지금은 passing variable을 List<Int>로 잡았지만 List<enum class>도 넘길 수 있을까요?
  • 이거 답변해주시는 분들 왜 이렇게 공부 잘하세요 ㅠㅠ

복받으실 거에요

코드

  • 아래 코드는 불필요 한 거 다 생략한 코드입니다

    class Menu() : Parcelable {
    var vegetables = listOf<Int>()
    
    constructor(parcel: Parcel) : this() {
        parcel.readList(vegetables, Int.javaClass.classLoader)
    }
    
    override fun writeToParcel(dest: Parcel?, flags: Int) {
        if(dest != null) dest.writeList(vegetables)
    }
    override fun describeContents(): Int {
        return 0
    }
    companion object CREATOR : Parcelable.Creator<Menu> {
        override fun createFromParcel(parcel: Parcel): Menu {
            return Menu(parcel)
        }
    
        override fun newArray(size: Int): Array<Menu?> {
            return arrayOfNulls(size)
        }
    }
    }
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)