欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android列表點(diǎn)擊事件定義的一些思考

 更新時(shí)間:2021年12月22日 10:56:45   作者:碼上夏雨  
大家好,本篇文章主要講的是Android列表點(diǎn)擊事件定義的一些思考,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽

前言

列表在我們的日常開發(fā)中使用的頻率是非常高的,像下圖的歌曲播放列表,或者課程展示,那么這些場(chǎng)景都需要我們用到點(diǎn)擊事件,點(diǎn)擊歌曲播放歌曲,點(diǎn)擊課程了解詳情,那么我們應(yīng)該怎么定義點(diǎn)擊事件呢?

列表點(diǎn)擊事件的定義

在Adapter內(nèi)創(chuàng)建接口,并設(shè)置set方法

// 聲明接口
interface OnItemClickListener {
    fun onItemClick(itemView: View?, pos: Int, itemId: Long)
}

//設(shè)置set方法
fun setOnItemClickListener(onItemClickListener: OnItemClickListener) {
    mClickListener = onItemClickListener
}

使用Adapter時(shí)實(shí)現(xiàn)接口

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{
            
        }
    }
})

但是這也會(huì)帶來一個(gè)問題,就是如果列表項(xiàng)點(diǎn)擊事件重復(fù)還好說,假如有類似下面的界面

如果競(jìng)賽咨詢是打開Activity,辦公信息是傳輸數(shù)據(jù),失物招領(lǐng)顯示Toast消息,那么全部依靠 pos 判斷會(huì)讓 onItemClick 里面的邏輯變得特別臃腫,同時(shí)我們修改item事件時(shí)也受 pos 的制約(因?yàn)?pos 都是提前定義好的),因此我覺得可以嘗試把點(diǎn)擊事件聲明在 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
) {
	// 具體實(shí)現(xiàn)
}

這樣如果我們想定義此 item 對(duì)應(yīng)的點(diǎn)擊事件就可以這樣:

//聲明model
val deleteItem = VastSwipeMenuItem(this@SlideActivity)
//定義點(diǎn)擊事件
deleteItem.setClickEvent { item: VastSwipeMenuItem, position: Int ->
    run {
        Toast.makeText(this@SlideActivity, "${item.title} $position", Toast.LENGTH_SHORT)
            .show()
    }
}

而在Adapter內(nèi)我們只需如下定義點(diǎn)擊事件

ListItemView.setOnClickListener {
	//item為根據(jù)pos獲取到的
    item.clickEvent?.let { it1 -> it1(item,position) }
}

這樣做的好處就在于對(duì)于列表項(xiàng)定義事件的點(diǎn)擊能夠更加自由,更方便。希望這篇文章能讓你有所收獲,我們下期再見????????

到此這篇關(guān)于Android列表點(diǎn)擊事件定義的一些思考的文章就介紹到這了,更多相關(guān)Android列表點(diǎn)擊事件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論