'Parcel a List of objects from another Parcelable class in Kotlin

I'm working on a weather app for a class and I'm having some trouble with parcelable. I've looked at several other questions that are similar to this on StackOverflow, but haven't found an answer, so I wanted to throw my specific situation out there.

I have this Data class:

package com.example.weatherapp

import android.os.Parcel
import android.os.Parcelable

data class CurrentConditions(
    val weather: List<WeatherCondition>,
    val main: Currents?,
    val name: String?
) : Parcelable {
    constructor(parcel: Parcel) : this(
        parcel.readParcelableList(List<WeatherCondition>(), WeatherCondition::class.java.classLoader),   <-- This line is giving me trouble
        parcel.readParcelable(Currents::class.java.classLoader),
        parcel.readString()
    ) {
    }

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeParcelable(main, flags)
        parcel.writeString(name)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<CurrentConditions> {
        override fun createFromParcel(parcel: Parcel): CurrentConditions {
            return CurrentConditions(parcel)
        }

        override fun newArray(size: Int): Array<CurrentConditions?> {
            return arrayOfNulls(size)
        }
    }
}

And on the line I've indicated, I'm trying to parcel a list of WeatherCondition objects, which is another parcelable data class:

package com.example.weatherapp

import android.os.Parcel
import android.os.Parcelable

data class WeatherCondition(
    val main: String?,
    val icon: String?
) : Parcelable {
    constructor(parcel: Parcel) : this(
        parcel.readString(),
        parcel.readString()
    ) {
    }

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeString(main)
        parcel.writeString(icon)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<WeatherCondition> {
        override fun createFromParcel(parcel: Parcel): WeatherCondition {
            return WeatherCondition(parcel)
        }

        override fun newArray(size: Int): Array<WeatherCondition?> {
            return arrayOfNulls(size)
        }
    }
}

The empty parentheses at the end of List<WeatherCondition>() have a red line on them. I'm not sure if I need something in the parentheses or if they shouldn't be there at all. If I remove the () then List<WeatherCondition> has the red line instead. Am I even close to on the right track? (This is my first time writing a mobile app, so I'm on a steep learning curve here).

Thanks for any help anyone can offer.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source