Android如何定义列表点击事件
导读:本文共1346.5字符,通常情况下阅读需要4分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 列表点击事件的定义在Adapter内创建接口,并设置set方法//声明接口interfaceOnItemClickListener{funonItemClick(itemView:View?,pos:Int,itemId:Long)}//设置set方法funsetOnItemClickListener(onItemClickListener:OnIt... ...
音频解说
目录
(为您整理了一些要点),点击可以直达。列表点击事件的定义
在Adapter内创建接口,并设置set方法
//声明接口interfaceOnItemClickListener{funonItemClick(itemView:View?,pos:Int,itemId:Long)}//设置set方法funsetOnItemClickListener(onItemClickListener:OnItemClickListener){mClickListener=onItemClickListener}
使用Adapter时实现接口
adapter.setOnItemClickListener(object:BaseVastBindingAdapter.OnItemClickListener{overridefunonItemClick(itemView:View?,pos:Int,itemId:Long){if(pos==0){//Somethingdowhenposisequalto0}elseif(pos==1){//Somethingdowhenposisequalto1}else{}}})
但是这也会带来一个问题,就是如果列表项点击事件重复还好说,假如有类似下面的界面
如果竞赛咨询是打开Activity,办公信息是传输数据,失物招领显示Toast消息,那么全部依靠 pos
判断会让 onItemClick
里面的逻辑变得特别臃肿,同时我们修改item事件时也受 pos
的制约(因为 pos
都是提前定义好的),因此我觉得可以尝试把点击事件声明在 model 里面,例如:
classVastSwipeMenuItem@JvmOverloadsconstructor(privatevalcontext:Context,valtitle:String=context.resources.getString(R.string.default_slide_item_title),valicon:Drawable?=ContextCompat.getDrawable(context,R.drawable.ic_null),valbackground:Drawable?=ContextCompat.getDrawable(context,R.drawable.default_menu_item_background),valtitleColor:Int=ContextCompat.getColor(context,R.color.default_menu_item_title_color),valclickEvent:((VastSwipeMenuItem,Int)->Unit)?=null){ //具体实现}
这样如果我们想定义此 item 对应的点击事件就可以这样:
//声明modelvaldeleteItem=VastSwipeMenuItem(this@SlideActivity)//定义点击事件deleteItem.setClickEvent{item:VastSwipeMenuItem,position:Int->run{Toast.makeText(this@SlideActivity,"${item.title}$position",Toast.LENGTH_SHORT).show()}}
而在Adapter内我们只需如下定义点击事件
ListItemView.setOnClickListener{ //item为根据pos获取到的item.clickEvent?.let{it1->it1(item,position)}}
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:
Android如何定义列表点击事件的详细内容,希望对您有所帮助,信息来源于网络。