Search code examples
androidkotlinparcelable

List of parcelable objects to parcelable Kotlin


I have a parcelable team class

@Parcelize
class Team(var name: String, var teamMembers: List<String>, var id: UUID): Parcelable

I have a service that returns a list of (currently hardcoded) Teams:

@Module 
class TeamInfoModule @Inject constructor(): ITeamInfoModule {

    @Provides
    override fun getAllTeamData(): List<Team> { ... }

}

I want to be able to pass this list of teams into a Fragment from an activity like so:

class MainActivity: AppCompatActivity() {

    @Inject
    lateinit var teamInfoModule: TeamInfoModule;

    lateinit var team: Team;

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        DaggerServiceModuleComponent.create().inject(this)

        val bundle = Bundle()
        val teamArrayList: List<Team> = this.teamInfoModule.getAllTeamData()
        val homeFragment = HomeFragment()

        bundle.putParcelable("teamData", teamArrayList)
        homeFragment.arguments = bundle

    }
}

This throws an error of: Type Mismatch. Required: Parcelable? Found: List<Team>.

I know that that a single team can be passed to my Fragment as it doesn't throw an error.

My question is, is there a utility that I haven't found that can somehow serialize a List to a Parcelable? I had the idea of creating a custom TeamListClass that also implements @Parcelize but I wanted to ask here before I went off and wrote code that I didn't need. Maybe something similar to a JS' Array.map() that will pass each Parcelable into the bundle?


Solution

  • You should use:

    bundle.putParcelableArrayList("teamData", ArrayList(teamArrayList))