废话不多比比,直接搂它!
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, [email protected], 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