Список отправляемых объектов для отправки Kotlin - PullRequest
1 голос
/ 18 января 2020

У меня есть класс команды, подлежащей передаче

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

У меня есть служба, которая возвращает список (в настоящее время жестко запрограммированных) команд:

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

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

}

Я хочу иметь возможность пройти это список команд во Фрагмент из действия, например, так:

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

    }
}

Это выдает ошибку: Type Mismatch. Required: Parcelable? Found: List<Team>.

Я знаю, что одна команда может быть передана моему Фрагменту как это не выдает ошибку.

Мой вопрос: есть ли утилита, которую я не нашел, которая может каким-то образом сериализовать список в Parcelable? У меня была идея создать собственный TeamListClass, который также реализует @Parcelize, но я хотел спросить здесь, прежде чем уйти и написать код, который мне не нужен. Может быть, что-то похожее на JS 'Array.map (), который будет передавать каждый Parcelable в пакет?

Ответы [ 2 ]

2 голосов
/ 18 января 2020

Преобразовать список в arrayList, используя ArrayList(teamArrayList)

 bundle.putParcelableArrayList("teamData", ArrayList(teamArrayList))
2 голосов
/ 18 января 2020

Вы должны использовать:

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