關(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)聽(tīng)寫法 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)聽(tīng)interface的方法中沒(méi)有參數(shù)可以使用這種超簡(jiǎn)單寫法,如果方法中有參數(shù)使用這種編輯器會(huì)報(bào)錯(cuò)不能通過(guò)編譯
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 ,這就是返回值。。。。寫出來(lái)了發(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編程操作嵌入式關(guān)系型SQLite數(shù)據(jù)庫(kù)實(shí)例詳解
這篇文章主要介紹了Android編程操作嵌入式關(guān)系型SQLite數(shù)據(jù)庫(kù)的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android操作SQLite數(shù)據(jù)庫(kù)的基本技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-01-01Android?側(cè)滑按鈕的實(shí)現(xiàn)代碼
這篇文章主要介紹了Android?側(cè)滑按鈕的實(shí)現(xiàn),本文結(jié)合示例代碼圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04Android 基于MediatorLiveData實(shí)現(xiàn)紅點(diǎn)的統(tǒng)一管理
這篇文章主要介紹了Android 基于MediatorLiveData實(shí)現(xiàn)紅點(diǎn)的統(tǒng)一管理,幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下2021-04-04Android中使用Notification實(shí)現(xiàn)狀態(tài)欄的通知
本文主要介紹了android利用Notification實(shí)現(xiàn)狀態(tài)欄的通知的示例代碼。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-04-04Android自定義相機(jī)、預(yù)覽區(qū)域裁剪
這篇文章主要為大家詳細(xì)介紹了Android自定義相機(jī)、預(yù)覽區(qū)域裁剪,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05Android 獲取應(yīng)用簽名的實(shí)現(xiàn)
本文主要講下在android中如何獲取應(yīng)用簽名,也方便平時(shí)用來(lái)區(qū)分一個(gè)應(yīng)用是不是原包應(yīng)用,具有一定的參考價(jià)值,感興趣的可以了解一下2016-02-02Android用tabhost實(shí)現(xiàn) 界面切換,每個(gè)界面為一個(gè)獨(dú)立的activity操作
這篇文章主要介紹了Android用tabhost實(shí)現(xiàn) 界面切換,每個(gè)界面為一個(gè)獨(dú)立的activity操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09使用Android studio查看Kotlin的字節(jié)碼教程
這篇文章主要介紹了使用Android studio查看Kotlin的字節(jié)碼教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03