Я новичок в kotlin и Android, и я смотрел на recyclerView, но столкнулся с несколькими сбоями.
По существу, у меня есть,
+ 2 действия, MainActivity, содержащие recyclerView и действие fullDetails который открывается с помощью onClick на каждом тикете recyclerView, Действие A & Действие B
Fab-шоу показывает функцию, уникальную для каждого элемента, например, Toast, как в этом примере.
+ ArrayList объектов, tempMenuList из options class,
+ Класс содержит несколько строк и лямбда-переменную actionOfItem , как я хочу чтобы иметь индивидуальные функции для каждого объекта,
+ Я пытаюсь передать лямбду через намерение как сериализуемое через прослушиватель OnClick следующим образом:
val intent=Intent(context,fullDetails::class.java)
intent.putExtra("action",Runnable{tempMenuList[position].actionOfItem} as java.io.Serializable)
+ В действии B я получаю лямбду вот так и попробуйте вызвать функцию, так как это приводило к сбою моего приложения, я сделал отдельный класс actions для лямбды, чтобы я мог написать getSerializable () как объект actions * 102 3 * class.
val action=bundle.getSerializable("function") as actions?
fabShow.setOnClickListener{
action?.action
}
Теперь приложение загружает MainActivity, но вылетает при нажатии OnClickListner в RecyclerView.
Я знаю, что мое именование очень плохое и запутанное, и я не использую комментарии
но есть ли способ передать уникальную функцию для каждого объекта через намерение? Изменить 1: Я прочитал, что я могу сделать это с помощью SharedPreferences, но это не рекомендуется.
Вот Logcat:
java.lang.ClassCastException: com.example.androidreferenceapp.MainActivity$menuAdapter$onBindViewHolder$1$1 cannot be cast to java.io.Serializable
at com.example.androidreferenceapp.MainActivity$menuAdapter$onBindViewHolder$1.onClick(MainActivity.kt:58)
at android.view.View.performClick(View.java:6605)
at android.view.View.performClickInternal(View.java:6582)
at android.view.View.access$3100(View.java:778)
at android.view.View$PerformClick.run(View.java:25897)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6762)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Вот полный исходный код, если это помогает