如何在 RecyclerView Header Decor 中设置监听器?

How can I set a listener inside a RecyclerView Header Decor?

我在我的 RecyclerView 中实现了粘性 headers,使用 this library

我想在自定义 header 中添加一个可点击的视图,但是当我在

中设置侦听器时
public void onBindHeaderViewHolder(HeaderHolder viewholderHeader, int position)

不理我,点后面的item(recyclerview列表的背景选择器)

onBindHeaderViewHolder 正在运行,因为我在其中设置了 setText。我想知道一种方法可以使 OnClickListener 持续存在并且视图接收到它。 (如果可能的话不回收)。

2016 年 3 月 29 日编辑: Sticky Headers 现在可以使用 ViewHolder 的相同侦听器点击,不再使用 ItemDecoration。而是使用 FrameLayout

答案: 我已经研究了 header-decor and on sticky-headers-recyclerview,我的结论是,ItemDecoration 不应该是实现一个真正好的粘性 headers,因为我们所拥有的只是在顶部绘制的东西而 不是视图(!) 所以我们不能在那个东西上附加任何监听器我们不能和那个东西互动。

但是...在我的 FlexibleAdapter 项目中,我能够拦截 sticky header,现在它已成为此功能的高级解决方案。

在这里查看我的评论:

另一个非常重要的注意事项:

我在上面提到的 2 个项目,使 使用循环 for 语句:他们绘制,作为 "decoration" 多次项目的顶部(带有 onDrawOver),当前显示的所有 header。不仅如此,他们将所有视图和对位置的引用放入缓存中 而无需回收(!) 它们。

你可以想象内存增加了多少,phone 每次滚动列表的每个像素时做了多少工作,以及巨大的电池消耗......嗯......我已经删除了所有这些都在新 StickyHeaderHelper.