gpt4 book ai didi

android - 如何在处理 RecyclerView ViewHolders 时删除 OnClickListener?

转载 作者:可可西里 更新时间:2023-11-01 18:45:35 26 4
gpt4 key购买 nike

我在我的应用程序项目中使用 RecyclerViews 并使用他们的 ViewHolders 设置 OnClickListeners(在他们的构造函数中,如 StackOverflow 中提到的 Q&A)。

然后我有这个问题:如何在处理 RecyclerView 的 ViewHolders 时从中删除 OnClickListeners。

通常,我们可以通过这样做来移除 OnClickListener:

view.setOnClickListener(null);

如果它是 ViewPager 的 PagerAdapter,我们可以在 destroyItem 方法中这样做。

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
View view = container.findViewById(R.id.viewId);
view.setOnClickListener(null);
}

我在哪里可以使用 RecyclerView 执行此操作? --或者,我不需要这样做?

最佳答案

如果你想在 View 离开屏幕时将 RecyclerView.Adapter 的 View 的 onCLickListener() 设置为空,你可以通过重写 http://developer.android.com/reference/android/support/v7/widget/RecyclerView.Adapter.html#onViewDetachedFromWindow(VH) 来实现。在你的 recyclerView 的适配器中。您将收到 holder 作为刚从屏幕上消失的参数。您可以将该容器中任何可用 View 的 onClickListener 设置为 null。

或者如果您只是想在它在屏幕上可见时执行相同的操作,您可以在 onBindViewHolder() 中执行。但这没有意义,因为您可以避免设置监听器。

要记住的要点,与此答案相关:
当您不想将点击监听器设置为查看每个数据集而只是少数几个时,可能需要将监听器设置为 null。在这种情况下,最好在监听器离开屏幕时将其设置为 null。否则,由于 RecyclerView 将重新使用(回收)消失的 holder 对象来表示正在变得可见的新数据集。在这个过程中,你没有设置监听器的数据集(view in a holder)可能因为回收而设置了监听器。

总而言之,虽然由于回收而获得平滑滚动的优势,但开发人员有责任重置 View (清除 ImageView 、 TextView 等)并设置 onCLickListener 为空等。

关于android - 如何在处理 RecyclerView ViewHolders 时删除 OnClickListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33846536/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com