微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在recyclerview item kotlin中实现按钮方法

如何解决在recyclerview item kotlin中实现按钮方法

我想在我的主片段中实现一个方法 onDownloadClick,但不明白如何去做:

    class Adapter(
    var routeListener: RouteListener
) :
    listadapter<RouteDomain,Adapter.RouteHolder>(SleepNightDiffCallback()) {
    var selectedItemPosition: Int = -1


    override fun onCreateViewHolder(parent: ViewGroup,viewType: Int): RouteHolder {
        return RouteHolder.from(parent)
    }

    override fun onBindViewHolder(holder: RouteHolder,position: Int) {
        val item = getItem(position)
        holder.itemView.setonClickListener {
            routeListener.onClickK(item)
            selectItemPosition(position)
        }
        holder.itemView.findViewById<MaterialButton>(R.id.buttonDownload).setonClickListener {
            routeListener.onDownloadClick(item)
        }

        holder.bind(
            item!!
        )
    }



    fun selectItemPosition(itemPos: Int) {
        selectedItemPosition = itemPos
        notifyDataSetChanged()
    }

    class RouteHolder(val binding: RouteHolderNewBinding) :
        RecyclerView.ViewHolder(binding.root) {
        //var fff:ConstraintLayout
        // @SuppressLint("SetTextI18n","SimpleDateFormat")
        fun bind(
            item: RouteDomain

        ) {
           // var button:MaterialButton = itemView.findViewById(R.id.buttonDownload)

            binding.route = item
            binding.executePendingBindings()

        }

        companion object {
            fun from(parent: ViewGroup): RouteHolder {
                val layoutInflater = LayoutInflater.from(parent.context)
                val binding = RouteHolderNewBinding.inflate(layoutInflater,parent,false)
                return RouteHolder(binding)
            }
        }


    }

}

class SleepNightDiffCallback : DiffUtil.ItemCallback<RouteDomain>() {
    override fun areItemsTheSame(
        oldItem: RouteDomain,newItem: RouteDomain
    ): Boolean {
        return oldItem.id == newItem.id
    }

    @SuppressLint("DiffUtilEquals")
    override fun areContentsTheSame(
        oldItem: RouteDomain,newItem: RouteDomain
    ): Boolean {
        return oldItem == newItem
    }


}

class RouteListener(val clickListener: (itemDetail: RouteDomain) -> Unit) {        // ???????????
    fun onClickK(itemDetail: RouteDomain) = clickListener(itemDetail)
    fun onDownloadClick(itemDetail: RouteDomain) = clickListener(itemDetail)
}

我的主要片段:

override fun onCreateView(
    inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?
): View? {
    (requireActivity().application as App).getappComponent().inject(this)
    binding = DataBindingUtil.inflate<FragmentCoordListBinding>(
        inflater,R.layout.fragment_coord_list,container,false
    )
    adapter = Adapter(RouteListener { itemelement ->
        viewmodel.onClickDetail(itemelement)

})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。