【发布时间】:2018-03-28 01:30:12
【问题描述】:
我在将现有的 Java 代码转换为 Kotlin 时遇到了一些问题,特别是在我与回收视图一起使用的自定义点击侦听器中。这是我到目前为止所得到的。
//this is the click listener interface (in Kotlin)
interface RecyclerClickListener {
fun onClick(view: View, position: Int)
}
在 Java 中,这就是我创建和使用界面的方式
RecyclerClickListener clickListener = (view1, position) -> {
setSelectedDate(dateCards.get(position).getDateTime());
DateCardAdapter adapter = (DateCardAdapter) date_recycler_view.getAdapter();
adapter.setSelected(position);
};
DateCardAdapter cardAdapter = new DateCardAdapter(dateCards, getActivity(), clickListener, true );
现在这就是我在 Kotlin 中尝试的方式(其中大部分是在 Android Studio 中自动转换的)
val listener: RecyclerClickListener = { view1: View, position: Int ->
setSelectedDate(dateCards[position].dateTime)
val adapter = sun_date_recycler_view.adapter as DateCardAdapter
adapter.setSelected(position)
} as RecyclerClickListener
val cardAdapter = DateCardAdapter(dateCards, activity!!, listener, true)
但是当我启动我的应用程序时,我在尝试创建侦听器时不断收到 ClassException
Caused by: java.lang.ClassCastException: .fragments.SunFragment$onViewCreated$listener$1 cannot be cast to .interfaces.RecyclerClickListener
【问题讨论】:
标签: android-recyclerview kotlin