如何在RecyclerView Android中向ItemDecoration添加点击监听器?

时间:2018-04-10 06:57:34

标签: android android-recyclerview kotlin item-decoration

我曾尝试在itemdecoration中添加一个点击监听器,如下所示,但仍然没有运气。请帮忙。

recyclerview.addOnItemTouchListener( object : RecyclerView.OnItemTouchListener{
    override fun onTouchEvent(rv: RecyclerView?, e: MotionEvent?) {

    }

    override fun onInterceptTouchEvent(rv: RecyclerView?, e: MotionEvent?): Boolean {
        val view = rv!!.findChildViewUnder(e!!.x, e!!.y)
        if(view == null) return false
        when(view.id){
            R.id.list_item_section_text->{
                Log.d("Clicked","Header")
            }
        }
        return false
    }

    override fun onRequestDisallowInterceptTouchEvent(disallowIntercept: Boolean) {

    }

})

1 个答案:

答案 0 :(得分:0)

ItemDecoration将帮助您在项目之间绘制内容,但是您正在绘制的View实际上是RecyclerView本身(根据布局检查器),通过其{{1} }。因此,您将无法在该装饰上添加基本的Canvas

根据您的代码,我想您为每个项目标头都有一个项目装饰?

为此,我要做的不是将标头视为onClickListener,而是将我的ItemDecoration用作项(具有不同类型)。

RecyclerView

在适配器(包含项:sealed class RecyclerViewItem object MainItem : RecyclerViewItem() object Header : RecyclerViewItem() )中,您将使用自定义ID覆盖RecyclerViewItem方法。然后,在getItemViewType中,您可以检查项目视图类型,并将onBindViewHolder添加到视图中(如果它是onClickListener)。

有关更多信息,您可以搜索使用不同项目类型构建RecyclerView