kotlin - Kotlin - 具有两个功能的接口,其中一个功能不起作用
问题描述
我有一个具有一个功能的界面,它工作正常。然后我添加了第二个函数,我想用它来发送相同的数组但发送到不同的活动,但在主要活动中我收到以下错误:没有为参数“PatDischargeBtnDelegate”传递值。这是我的代码:
界面
interface PatDataCommentDelegate {
fun patDataCommentBtnClicked(ptdata: PatData)
fun dischargePatientBtnClicked(ptdata: PatData)
}
适配器
class PatDataAdapter(val ptdata: ArrayList<PatData>, val patDataBtnDelegate: PatDataCommentDelegate,
val patDischargeBtnDelegate: PatDataCommentDelegate) :
RecyclerView.Adapter<PatDataAdapter.ViewHolder>() {
......
commentImage?.setOnClickListener {
patDataBtnDelegate.patDataCommentBtnClicked(ptdata)
}
dischargePatImg?.setOnClickListener{
patDischargeBtnDelegate.dischargePatientBtnClicked(ptdata)
}
主要活动
class PatDataActivity : AppCompatActivity(), PatDataCommentDelegate {
....
patDataFromAdapter = PatDataAdapter(ptdatas, this) //I get the error here
override fun patDataCommentBtnClicked(ptdata: PatData) {
val commentDataActivity = Intent(this, CommentsActivity::class.java)
commentDataActivity.putExtra(DOCUMENT_ID, ptdata.documentId)
commentDataActivity.putExtra(USER_ID, userId)
commentDataActivity.putExtra(PTNAME, ptdata.ptName)
commentDataActivity.putExtra(FIN, ptdata.fin)
commentDataActivity.putExtra(ROOM, ptdata.room)
commentDataActivity.putExtra(HOSP, ptdata.hosp)
startActivity(commentDataActivity)
}
override fun dischargePatientBtnClicked(ptdata: PatData) {
val dischargePatientActivity = Intent(this, DischargeActivity::class.java)
dischargePatientActivity.putExtra(DOCUMENT_ID, ptdata.documentId)
dischargePatientActivity.putExtra(USER_ID, userId)
dischargePatientActivity.putExtra(PTNAME, ptdata.ptName)
dischargePatientActivity.putExtra(FIN, ptdata.fin)
dischargePatientActivity.putExtra(ROOM, ptdata.room)
dischargePatientActivity.putExtra(HOSP, ptdata.hosp)
startActivity(dischargePatientActivity)
}
我不确定我错过了什么,非常感谢任何帮助。谢谢!
解决方案
问题出在第三个论点中。
class PatDataAdapter(
val ptdata: ArrayList<PatData>,
val patDataBtnDelegate: PatDataCommentDelegate,
val patDischargeBtnDelegate: PatDataCommentDelegate // you don't need this one.
) : RecyclerView.Adapter<PatDataAdapter.ViewHolder>() {
这应该有效:
class PatDataAdapter(val ptdata: ArrayList<PatData>, val patDataBtnDelegate: PatDataCommentDelegate) :
RecyclerView.Adapter<PatDataAdapter.ViewHolder>() {
commentImage?.setOnClickListener {
patDataBtnDelegate.patDataCommentBtnClicked(ptdata)
}
dischargePatImg?.setOnClickListener{
patDataBtnDelegate.dischargePatientBtnClicked(ptdata)
}
您只需要对接口PatDataCommentDelegate
本身的引用,而不是分别对每个方法的引用。
推荐阅读
- reactjs - Typescript 无法解析 react-router-dom
- c - 将终端附加到作为守护进程运行的进程(以运行 ncurses UI)
- html - Bootstrap.js:在下拉菜单旁边对齐输入组
- python - Python 不理解我的字符串变量
- xcode - iOS项目改成macOS无法编译代码
- javascript - 该组件在所有页面上运行而不被调用 - Vue Nuxtjs
- android - 不良状态:无元素颤动
- javascript - 如何列出等于或大于用户输入值的数组值
- python - Youtube-DL 的 discord.py 问题,现在正在运行。知道修复吗?
- android - Flutter:在通道 plugins.flutter.io/path_provider 上找不到方法 getApplicationDocumentsDirectory 的实现