kotlin AlertDialog使用方法以及kotlin点击事件和长按事件冲突

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/yuhang01/article/details/102611015

废话不多比比,直接搂它!

1. kotlin AlertDialog使用方法

问题说明:我在recyclerview的长按点击事件中想要是这一个对话框进行显示,调用方法:
val builder = AlertDialog.Builder(this) 一直报我类型不匹配 然后我传activity.this也是报错
解决方法:(长按点击事件中)

  (staff_recycler.adapter as StarffRecordAdapter).setOnItemChildLongClickListener(object :BaseQuickAdapter.OnItemChildLongClickListener {
                                override fun onItemChildLongClick(adapter: BaseQuickAdapter<*, *>?, view: View?, position: Int): Boolean {
                                    var data:StarffRecordEntity.DateBean = list.get(position)

                                    val item = arrayOf("修改", "删除")
                                    val builder = AlertDialog.Builder(this@StarfRecord)

                                    builder.setTitle("请选择")

                                    builder.setItems(item) { dialog, which ->
                                        if (item[which] == "修改") {
//                                        val name = "Pingshen/edit"
//                                        usergroup = ContractViewEdit::class.java
//                                        PowerDecide.sendPowerPlus(uid, name, this@ContractViewManager, usergroup, daa)
                                        } else if (item[which] == "删除") {
                                        val name = "Hrmdangan/del"
                                            Log.i("idbudui",data.id)
                                        val link = getString(R.string.trans_all) + "Hrmdanganjson/"
                                            postDel(uid, name,this@StarfRecord,data.id , link)
                                        }
                                    }
                                    builder.setNegativeButton("取消", null)
                                    builder.show()
                                   return true
                                }

                            })

2.kotlin点击事件和长按事件冲突

问题说明:首先我使用的是BaseQuickAdapter这个万能适配器框架 我得长按事件出现了,但是当我点击子项item时没反应,我就知道时事件冲突了
解决方法:
如果你的点击事件和长按事件 长按事件不管用 源码中点击的优先级比长按的要高 所以你可以设置 长按事件中的 返回值为true
如果你的和我一样 长按事件管用,单击事件不管用 的解决方法:

检查适配器

class StarffRecordAdapter(data:List<StarffRecordEntity.DateBean>):BaseQuickAdapter<StarffRecordEntity.DateBean,BaseViewHolder>(R.layout.starff_record_item,data) {
    override fun convert(helper: BaseViewHolder, item: StarffRecordEntity.DateBean?) {
        item?:return
      
        helper.addOnLongClickListener(R.id.starff_record_item_tou)//长按事件
                .addOnClickListener(R.id.starff_record_item_tou)//点击事件
    }
}

点击事件

(staff_recycler.adapter as StarffRecordAdapter).setOnItemChildClickListener { adapter, view, position ->
                                var data:StarffRecordEntity.DateBean = list.get(position)
                                var intent = Intent(this,StarfRecordInfo::class.java)
                                intent.putExtra("dashuju",data)
                                startActivity(intent)
                            }

请检查是否写成了setOnItemClickListener 必须写成setOnItemChildClickListener才ok

猜你喜欢

转载自blog.csdn.net/yuhang01/article/details/102611015