Viewholder函数的回调使单击不起作用

问题描述

我的视口中具有以下功能-

private fun handlenormalMode(callback: (isTaskMarked: Boolean,model : TaskModel) -> Unit,model: TaskModel) {
        binding.groupTaskDeleteTask.setAsGone() // sets view as GONE
        binding.groupTaskRootLayout.setonClickListener {
            when (isTaskDone) {
                false -> {
                    binding.groupTaskTitle.paintFlags = Paint.STRIKE_THRU_TEXT_FLAG
                    binding.groupTaskTitle.setTextColor(context.getColor(R.color.grey_text))
                    binding.groupTaskImage.setAsGone() // sets view as GONE
                    binding.groupTaskDoneIndicator.setAsVisible()// sets view as VISIBLE
                }
                true -> {
                    binding.groupTaskTitle.paintFlags = 0
                    binding.groupTaskTitle.setTextColor(context.getColor(R.color.black))
                    binding.groupTaskDoneIndicator.setAsGone() // sets view as GONE
                    binding.groupTaskImage.setAsVisible() // sets view as VISIBLE
                }
            }
            isTaskDone = !isTaskDone
            callback(isTaskDone,model)
        }
    }

我正在使用回调函数通知我的Fragment何时执行了单击,以便可以使用viewmodel将内容添加到我的数据库中。

问题是,触发回调时,隐藏和显示任何Viewholder视图的整个逻辑不再起作用。

片段中的回调实现-


 // (part of adapter constructor)
{ isTaskMarked,taskModel ->
            //Task marked callback
            handleItemmarkedChange(isTaskMarked,taskModel)
        })

private fun handleItemmarkedChange(taskMarked: Boolean,taskModel: TaskModel) {
        val selfId = profileSharedPrefs.getString(Constants.USER_REGISTERED_ID,"")!!
        taskviewmodel.setTaskMarked(taskModel,taskMarked,selfId = selfId)
    }

// My viewmodel - 

fun setTaskMarked(task: TaskModel,isMarked: Boolean,selfId: String) {
        viewmodelScope.launch {
            taskRepository.setTaskMarked(task.id,isMarked)
            val action = if(isMarked) {
                ActivityEntity.ActivityAction.TaskMarked
            } else {
                ActivityEntity.ActivityAction.TaskUnmarked
            }
            activitiesRepository.insertActivity(
                ActivityEntity(
                    createdByUser = selfId,activityTitle = task.taskTitle,action = action,groupId = task.groupId))
        }
    }

如果我从VH中删除了回调,则一切正常,但是办公室并没有通知VM有关这些更改的信息,并且我也没有将必要的数据添加数据库中。

我想念什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)