android-fragments 如何在onBindViewHolder中为对话框片段调用支持片段管理器?

voj3qocg  于 2022-11-14  发布在  Android
关注(0)|答案(1)|浏览(119)

我有一个问题在这里,idk如何显示dialogFragment在我的适配器。我想每次我的itemView点击它将显示我的dialogFragment
这是我的onBindViewHolder

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    val type = list[position]
    holder.binding.tvTitle.text = type.title
    holder.binding.tvIsiNotes.text = type.content

    holder.itemView.setOnClickListener {
        val dialogFragment = AddFragment()
        dialogFragment.show(supportFragmentManager, null)
    }

    if(position == list.size - 1){
        onLoad?.let {
            it()
        }
    }
}

这是我的代码使用导航组件,但我想显示对话框。

holder.itemView.setOnClickListener {
        val action = HomeFragmentDirections.actionHomeFragmentToEditFragment(type)
        holder.itemView.findNavController().navigate(action)
    }
w8biq8rn

w8biq8rn1#

您可以定义自订的Click侦听程式类别,做为配接器的参数传递:

class YourAdapter(
    private val clickListener: (type: Int) -> Unit
) { 
    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val type = list[position]
        ...
        holder.itemView.setOnClickListener(clickListener(type))
        ...
    }
}

然后,将适配器示例化为:

val adapter = YourAdapter { it ->
    findNavController().navigate(HomeFragmentDirections.actionHomeFragmentToEditFragment(it))
}

相关问题