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列表點擊事件定義的一些思考的文章就介紹到這瞭,更多相關Android列表點擊事件內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Android 自定義精美界面包含選項菜單 上下文菜單及監聽詳解流程
- Android MVVM架構實現RecyclerView列表詳解流程
- Android實現的RecyclerView適配器
- Android BottomNavigationView結合ViewPager實現底部導航欄步驟詳解
- Android studio實現菜單效果