您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Android如何定義列表點擊事件,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
在Adapter內創建接口,并設置set方法
// 聲明接口 interface OnItemClickListener { fun onItemClick(itemView: View?, pos: Int, itemId: Long) } //設置set方法 fun setOnItemClickListener(onItemClickListener: OnItemClickListener) { mClickListener = onItemClickListener }
使用Adapter時實現接口
adapter.setOnItemClickListener(object :BaseVastBindingAdapter.OnItemClickListener{ override fun onItemClick(itemView: View?, pos: Int, itemId: Long) { if (pos == 0) { //Something do when pos is equal to 0 }else if (pos == 1) { //Something do when pos is equal to 1 }else{ } } })
但是這也會帶來一個問題,就是如果列表項點擊事件重復還好說,假如有類似下面的界面
如果競賽咨詢是打開Activity,辦公信息是傳輸數據,失物招領顯示Toast消息,那么全部依靠 pos
判斷會讓 onItemClick
里面的邏輯變得特別臃腫,同時我們修改item事件時也受 pos
的制約(因為 pos
都是提前定義好的),因此我覺得可以嘗試把點擊事件聲明在 model 里面,例如:
class VastSwipeMenuItem @JvmOverloads constructor( private val context: Context, val title: String = context.resources.getString(R.string.default_slide_item_title), val icon: Drawable? = ContextCompat.getDrawable(context, R.drawable.ic_null), val background: Drawable? = ContextCompat.getDrawable(context, R.drawable.default_menu_item_background), val titleColor: Int = ContextCompat.getColor(context, R.color.default_menu_item_title_color), val clickEvent: ((VastSwipeMenuItem, Int) -> Unit)? = null ) { // 具體實現 }
這樣如果我們想定義此 item 對應的點擊事件就可以這樣:
//聲明model val deleteItem = 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) } }
關于“Android如何定義列表點擊事件”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。