Android列表点击事件定义的一些思考

 更新时间:2021年12月22日 10:56:45   作者:码上夏雨  
大家好,本篇文章主要讲的是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列表点击事件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • ViewPager+PagerAdapter实现带指示器的引导页

    ViewPager+PagerAdapter实现带指示器的引导页

    这篇文章主要为大家详细介绍了ViewPager+PagerAdapter实现带指示器的引导页,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • Android仿Win8界面开发

    Android仿Win8界面开发

    这篇文章主要介绍了Android仿Win8界面开发的实例代码,将要模仿的Win8界面的一个个设计,分割成一个一个的方块,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • Android实现读取相机(相册)图片并进行剪裁

    Android实现读取相机(相册)图片并进行剪裁

    在 Android应用中,很多时候我们需要实现上传图片,或者直接调用手机上的拍照功能拍照处理然后直接显示并上传功能,下面将讲述调用相机拍照处理图片然后显示和调用手机相册中的图片处理然后显示的功能
    2015-08-08
  • Android手势密码的实现

    Android手势密码的实现

    这篇文章主要介绍了Android手势密码的实现的相关资料,需要的朋友可以参考下
    2016-04-04
  • flutter  TextField换行自适应的实现

    flutter TextField换行自适应的实现

    这篇文章主要介绍了flutter TextField换行自适应的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • Android ListView 子控件onClick正确获取position的方法

    Android ListView 子控件onClick正确获取position的方法

    这篇文章主要介绍了Android ListView 子控件onClick正确获取position的方法,非常不错,具有参考借鉴价值,需要的的朋友参考下吧
    2017-01-01
  • 利用kotlin实现统计文件字符个数的方法示例

    利用kotlin实现统计文件字符个数的方法示例

    最近在学习kotlin,发现了一些不错的小技巧,所以下面这篇文章主要给大家介绍了关于利用kotlin实现统计文件字符个数的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-12-12
  • Android-Okhttp的使用解析

    Android-Okhttp的使用解析

    okhttp是Android6.0推出的网络框架。这篇文章主要介绍了Android-Okhttp的使用解析,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03
  • 在Android中访问WebService接口的方法

    在Android中访问WebService接口的方法

      最近公司有个项目需要从Android平台访问WebService接口,实现向发布的函数传递对象。在网上找了一些资料,发现使用ksoap2可以调用WebService传递对象。
    2013-05-05
  • Android实现百分比下载进度条效果

    Android实现百分比下载进度条效果

    这篇文章主要为大家详细介绍了Android实现百分比下载进度条效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12

最新评论