У меня есть представление SubEpoxyRecyclerView
, которое является подклассом EpoxyRecyclerView
, моего родительского класса.Когда это представление инициализируется, суперкласс EpoxyRecyclerView
вызывает метод setItemSpacingPx(Int)
в теле конструктора.
Когда вызывается этот метод, ни одна из моих переменных класса не инициализируется!Приложение вылетает на линии itemDecorator.pxBetweenItems
, заявляя, что itemDecorator
является нулем, что невозможно
Подкласс (Kotlin):
class SubEpoxyRecyclerView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0)
: EpoxyRecyclerView(context, attrs, defStyleAttr) {
private val itemDecorator: Decor = Decor()
private val someInt: Int = 5
private var someBoolean: Boolean = true
override fun setItemSpacingPx(spacingPx: Int) {
// Called from superclass. Debug: itemDecorator is null,
// someInt is 0, someBoolean is false
removeItemDecoration(itemDecorator)
itemDecorator.pxBetweenItems = spacingPx
if (spacingPx > 0) {
addItemDecoration(itemDecorator)
}
}
}
Суперкласс (Java - библиотека):
public class EpoxyRecyclerView extends RecyclerView {
public EpoxyRecyclerView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
if (attrs != null) {
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.EpoxyRecyclerView,
defStyleAttr, 0);
setItemSpacingPx(a.getDimensionPixelSize(R.styleable.EpoxyRecyclerView_itemSpacing, 0));
a.recycle();
}
init();
}
}