關(guān)于Kotlin寫界面時(shí)諸多控件的點(diǎn)擊事件
界面中控件較多的話,每個(gè)控件都設(shè)置setOnClickListener(this)是很麻煩的,為此抽出了一個(gè)Context的擴(kuò)展類:
fun Context.setViewClick(listener: View.OnClickListener, vararg views: View) {
for (it in views) {
it.setOnClickListener(listener)
}
}
即只需要將Activity或Fragment實(shí)現(xiàn)View.OnClickListener接口,然后調(diào)用上面的方法,第一個(gè)參數(shù)傳this即可,后面將要設(shè)置點(diǎn)擊事件的控件傳入,然后在界面中覆寫 onClick(v: View)即可。
補(bǔ)充知識(shí):kotlin 事件監(jiān)聽寫法 Listener寫法 筆記
class MenuKaiJiangLiShiFragment : BaseFragment(),View.OnClickListener, BaseQuickAdapter.OnItemClickListener{
override fun onItemClick(adapter: BaseQuickAdapter<*, *>?, view: View?, position: Int) {
showToast("點(diǎn)擊了$position")
}
adapter.setOnItemClickListener(this)
第一種同java類繼承interface 實(shí)現(xiàn)方法
adapter.setUpFetchListener { showToast("刷新中...") }
第二種kotlin自己得寫法,當(dāng)監(jiān)聽interface的方法中沒有參數(shù)可以使用這種超簡(jiǎn)單寫法,如果方法中有參數(shù)使用這種編輯器會(huì)報(bào)錯(cuò)不能通過編譯
adapter.setOnLoadMoreListener(object:BaseQuickAdapter.RequestLoadMoreListener{
override fun onLoadMoreRequested() {
showToast("加載中...")
adapter.loadMoreComplete()
}
}, rv_kjls)
第三種kotlin寫法,使用object關(guān)鍵字,匿名內(nèi)部類方式

adapter.setOnLoadMoreListener({
showToast("加載中...")
adapter.loadMoreComplete()
}, rv_kjls)
as提示我可以優(yōu)化代碼,果斷alt+enter
今天寫長(zhǎng)按時(shí)間的時(shí)候遇到有返回值的listener
第四種加返回值。注意在->后面加true 或者false ,這就是返回值。。。。寫出來了發(fā)現(xiàn)真簡(jiǎn)單,不知道的時(shí)候真是一臉懵逼~
allocAdapter.setOnItemLongClickListener{
adapter, view, position->
代碼塊
true
}
看自定義listener的時(shí)候發(fā)現(xiàn)->后面寫返回值的
private lateinit var listen: ((Int) -> Unit)
fun setListen(listen: ((Int) -> Unit)) {
this.listen = listen
}
//定義個(gè)延遲加載的listener變量,屬性是一個(gè)方法,方法內(nèi)有3個(gè)參數(shù),字符串,布爾,實(shí)體類,返回值是布爾
private lateinit var listen: ((String, Boolean, Bean) -> Boolean)
fun setListen(listen: ((String, Boolean, Bean) -> Boolean) {
this.listen = listen
}
class XSPagerAdapter(fm: FragmentManager, list: ArrayList<CommonInvitationFragment>) : FragmentPagerAdapter(fm) {
private var fragmentList: ArrayList<CommonInvitationFragment> = list
override fun getItem(position: Int): Fragment {
return fragmentList[position]
}
override fun getCount(): Int {
return fragmentList.size
}
}
記錄kotlin怎樣使用構(gòu)造參數(shù)
以上這篇關(guān)于Kotlin寫界面時(shí)諸多控件的點(diǎn)擊事件就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Android RecyclerView顯示Item布局不一致解決辦法
這篇文章主要介紹了Android RecyclerView顯示Item布局不一致解決辦法的相關(guān)資料,需要的朋友可以參考下2017-07-07
Android SQLite3多線程操作問題研究總結(jié)
這篇文章主要介紹了Android SQLite3多線程操作問題研究總結(jié),本文總結(jié)了SQLite3是否支持多線程、SQLiteDatabase的同步鎖、多線程讀數(shù)據(jù)庫(kù)等問題,需要的朋友可以參考下2015-03-03
Android使用自定義View實(shí)現(xiàn)360手機(jī)衛(wèi)士波浪球進(jìn)度的效果
360衛(wèi)士的波浪球進(jìn)度的效果,一般最常用的方法就是畫線的方式,先繪sin線或貝塞爾曲線,然后從左到右繪制豎線,然后再裁剪圓區(qū)域2018-05-05
擁抱kotlin之如何習(xí)慣使用kotlin高階函數(shù)
這篇文章主要給大家介紹了關(guān)于擁抱kotlin之如何習(xí)慣使用kotlin高階函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用kotlin具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
Android應(yīng)用中設(shè)置alpha值來制作透明與漸變效果的實(shí)例
這篇文章主要介紹了Android應(yīng)用中設(shè)置alpha值來制作透明與漸變效果的實(shí)例,展示了基礎(chǔ)的透明漸變動(dòng)畫的編寫方法,需要的朋友可以參考下2016-04-04
Android studio 實(shí)現(xiàn)隨機(jī)位置畫10個(gè)隨機(jī)大小的五角星的代碼
這篇文章主要介紹了Android studio 實(shí)現(xiàn)隨機(jī)位置畫10個(gè)隨機(jī)大小的五角星,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
詳解Android數(shù)據(jù)存儲(chǔ)之Android 6.0運(yùn)行時(shí)權(quán)限下文件存儲(chǔ)的思考
本篇文章主要介紹了Android數(shù)據(jù)存儲(chǔ)之Android 6.0運(yùn)行時(shí)權(quán)限下文件存儲(chǔ)的思考,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。2016-12-12
Android仿銀行客戶簽名并且保存簽名的截圖文件并命名為本地時(shí)間
本文通過實(shí)例代碼給大家介紹了Android仿銀行客戶簽名并且保存簽名的截圖文件并命名為本地時(shí)間,需要的朋友可以參考下2017-07-07
Android CardView+ViewPager實(shí)現(xiàn)ViewPager翻頁(yè)動(dòng)畫的方法
本篇文章主要介紹了Android CardView+ViewPager實(shí)現(xiàn)ViewPager翻頁(yè)動(dòng)畫的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06

