【发布时间】:2019-12-31 20:01:07
【问题描述】:
Android 开发和 Kotlin 的新手。我希望根据我的数据类的属性使用不同的视图,但我不确定如何做,我不确定我想做的事情是否可能。我知道我需要重写 getItemViewType,并在 onCreateViewHolder 中利用它,但我对 getItemViewType 的代码感到困惑。
房间数据类
data class PersonMessages(
@Embedded
val Person: Person,
@Relation(
parentColumn = "id",
entityColumn = "person_id"
)
val Messages: List<Messages>
)
RecyclerView 适配器
class PeopleViewAdapter: ListAdapter<PersonMessages, PeopleViewAdapter.ViewHolder>(PeopleDiffCallback()) {
// ...
override fun getItemViewType(position: Int): Int =
when (getItem(position)) {
is Messages -> R.layout.fragment_message_detail
is Person -> R.layout.fragment_people_detail
else -> throw IllegalStateException("Illegal item view type")
}
}
对于 getItemViewType,Android Studio 正确地抱怨 Messages 和 Person 是与 PersonMessages 不兼容的类型,但我不知道我需要更改什么以及在哪里才能使它工作。
感谢所有线索。
【问题讨论】:
标签: kotlin android-room android-recyclerview data-class