不确定发生了什么。在Java中可以正常工作,但是当切换到Kotlin时,我不知道如何使其工作。我遇到了以下错误:
需要属性的getter或setter
在 val mMoment: Moment 上
class SquareViewHolder(v: CardView, viewModel: BarreViewModel) : RecyclerView.ViewHolder (v) {
val mImage: ImageView
val by lazy mMoment: Moment
init {
mImage = v.findViewById(R.id.square_moment)
mImage.setOnClickListener {
//val focused = ArrayList<Moment>(0)
//focused.add(mMoment)
//viewModel.focusedMoments = focused
//viewModel.setItemClicked(true)
}
}
fun bind(moment: Moment) {
val mMoment = moment
}
}
我也尝试过使用以下代码:
var lateinit mMoment: Moment
但是我收到了相同的错误。
现在,Moment对象是一个Kotlin数据对象,我不确定是否会导致问题。
在Java中,这样实例化对象是有效的,但是出于某种原因,Kotlin似乎不喜欢这种方式。我不知道为什么。感谢任何帮助!
Java代码如下:
public class SquareMomentViewHolder extends RecyclerView.ViewHolder {
public ImageView mImage;
public Moment mMoment;
BarreChatViewModel viewModel;
public SquareMomentViewHolder(CardView v, BarreChatViewModel viewModel) {
super(v);
mImage = v.findViewById(R.id.square_moment);
mImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
List<Moment> focused = new ArrayList(0);
focused.add(mMoment);
viewModel.setFocusedMoments(focused);
viewModel.setItemClicked(true);
}
});
}
public void bind(Moment moment) {
mMoment = moment;
}
}
这个错误的可能原因是这个数据类被用于我的ROOMDatabase。这是一个我向用户界面拖动的实体对象。也许这不是一个恰当的做法,我不确定。