關於Kotlin寫介面時諸多控制元件的點選事件
阿新 • • 發佈:2020-03-26
介面中控制元件較多的話,每個控制元件都設定setOnClickListener(this)是很麻煩的,為此抽出了一個Context的擴充套件類:
fun Context.setViewClick(listener: View.OnClickListener,vararg views: View) { for (it in views) { it.setOnClickListener(listener) } }
即只需要將Activity或Fragment實現View.OnClickListener介面,然後呼叫上面的方法,第一個引數傳this即可,後面將要設定點選事件的控制元件傳入,然後在介面中覆寫 onClick(v: View)即可。
補充知識:kotlin 事件監聽寫法 Listener寫法 筆記
class MenuKaiJiangLiShiFragment : BaseFragment(),View.OnClickListener,BaseQuickAdapter.OnItemClickListener{ override fun onItemClick(adapter: BaseQuickAdapter<*,*>?,view: View?,position: Int) { showToast("點選了$position") } adapter.setOnItemClickListener(this)
第一種同java類繼承interface 實現方法
adapter.setUpFetchListener { showToast("重新整理中...") }
第二種kotlin自己得寫法,當監聽interface的方法中沒有引數可以使用這種超簡單寫法,如果方法中有引數使用這種編輯器會報錯不能通過編譯
adapter.setOnLoadMoreListener(object:BaseQuickAdapter.RequestLoadMoreListener{ override fun onLoadMoreRequested() { showToast("載入中...") adapter.loadMoreComplete() } },rv_kjls)
第三種kotlin寫法,使用object關鍵字,匿名內部類方式
adapter.setOnLoadMoreListener({ showToast("載入中...") adapter.loadMoreComplete() },rv_kjls)
as提示我可以優化程式碼,果斷alt+enter
今天寫長按時間的時候遇到有返回值的listener
第四種加返回值。注意在->後面加true 或者false ,這就是返回值。。。。寫出來了發現真簡單,不知道的時候真是一臉懵逼~
allocAdapter.setOnItemLongClickListener{ adapter,view,position-> 程式碼塊 true }
看自定義listener的時候發現->後面寫返回值的
private lateinit var listen: ((Int) -> Unit) fun setListen(listen: ((Int) -> Unit)) { this.listen = listen } //定義個延遲載入的listener變數,屬性是一個方法,方法內有3個引數,字串,布林,實體類,返回值是布林 private lateinit var listen: ((String,Boolean,Bean) -> Boolean) fun setListen(listen: ((String,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怎樣使用構造引數
以上這篇關於Kotlin寫介面時諸多控制元件的點選事件就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。