Эпоксидная смола, Котлин: Использование @ModelView ничего не генерирует без ошибок - PullRequest
0 голосов
/ 30 июня 2018

Я успешно могу эпоксидная смола генерировать код из этого EpoxyModelClass

@EpoxyModelClass(layout = R.layout.card_sample)
abstract class PhotoModel : EpoxyModelWithHolder<PhotoModel.Holder>() {
    @EpoxyAttribute
    var title: String? = null

    override fun bind(holder: PhotoModel.Holder) {
        holder.header.text = title
    }

    class Holder : EpoxyHolder() {
        override fun bindView(itemView: View) {
            header = itemView.findViewById(R.id.header_label)
        }

        lateinit var header: TextView
    }
}

но, к сожалению, не из ModelView. Он строится без ошибок, но не генерирует эпоксидные классы вокруг этого:

@ModelView
abstract class HeaderView : LinearLayout {
    constructor(context: Context) : super(context)
    constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
    constructor(context: Context, attrs: AttributeSet, defStyle: Int) : super(
        context,
        attrs,
        defStyle
    )
    private var titleProp: CharSequence? = null
    @TextProp(defaultRes = R.string.app_name)
    fun setTitle(title: CharSequence) {
        titleProp = title
    }
}

Попробовал много вариантов, чтобы понять это правильно, но в журналах сборки нет полезных ошибок.

1 Ответ

0 голосов
/ 30 июня 2018

Использование open для обеих функций и класса вместо abstract, похоже, работает.

@ModelView(defaultLayout = R.layout.card_sample)
open class HeaderView : RelativeLayout {
    constructor(context: Context) : super(context)
    constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
    constructor(context: Context, attrs: AttributeSet, defStyle: Int) : super(
        context,
        attrs,
        defStyle
    )

    private var titleProp: CharSequence? = null
    @TextProp(defaultRes = R.string.app_name)
    open fun setTitle(string: CharSequence?) {
        titleProp = string
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...