【发布时间】:2019-02-01 15:22:34
【问题描述】:
我有一个视图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();
}
}
【问题讨论】:
标签: java android kotlin android-view