Итак, у меня есть ArrayList<AbstractObject>
, тип класса abstract
. И у меня есть 2 вещи, которые расширяются AbstractObject
. Если я использую abstractList.add(Object1)
, это говорит о том, что ArrayList ожидает объект типа AbstractObject, а не Object1 . Я думал, что это возможно. Причина, по которой я хочу сделать это, состоит в том, чтобы использовать несколько объектов с двумя разными данными в одном RecyclerView
. (* 1 010 *)
abstract class ListItem {
abstract val type: Int
companion object {
const val TYPE_HEADER = 0
const val TYPE_ITEM = 1
}
}
class HeaderItem(val headerTitle: String) : ListItem() {
val type: Int
get() = TYPE_HEADER
}
class ObjectItem(val object: ParseObject) : ListItem() {
val type: Int
get() = TYPE_ITEM
}
Инициатива № 1:
var recyclerViewArray: ArrayList<out ListItem> = ArrayList()
Это ошибка, если я хочу добавить HeaderItem в этот список:
Инициатива № 2:
var recyclerViewArray: ArrayList<ListItem> = ArrayList()
Это говорит Type mismatch
. Пробовал с as
, но as
пожелтел с сообщением This cast can never succeed.