Android 如何从回收视图中删除“OnClickListeners”?
我在我的应用程序项目中使用了Android 如何从回收视图中删除“OnClickListeners”?,android,android-layout,listview,Android,Android Layout,Listview,我在我的应用程序项目中使用了RecyclerViews,显然,当视图被回收时,它们会保留侦听器 我试图删除方法onViewRecycled()中的侦听器 但是没有起作用 还有什么想法吗?在视图持有者中设置ClickListeners。这样,侦听器将只设置一次。您将获得viewholder中的适配器位置。在您的viewholder中设置onclicklisteners。这样,侦听器将只设置一次。您将在viewholder中获得适配器位置。最初在哪里设置OnClickListener?任何根据位置变
RecyclerViews
,显然,当视图被回收时,它们会保留侦听器
我试图删除方法onViewRecycled()中的侦听器
但是没有起作用
还有什么想法吗?在视图持有者中设置ClickListeners。这样,侦听器将只设置一次。您将获得viewholder中的适配器位置。在您的viewholder中设置onclicklisteners。这样,侦听器将只设置一次。您将在viewholder中获得适配器位置。最初在哪里设置OnClickListener
?任何根据位置变化的视图属性都应该在onBindViewHolder()
方法中设置。@MikeM。我正在使用onBindViewHolder()方法进行设置。这可能就是您的视图
再次具有OnClickListener
的原因。回收后,它将被传递到onBindViewHolder()
中,以便再次使用。如果您在该方法中无条件地设置侦听器,这就是原因。您最初在哪里设置OnClickListener
?任何根据位置变化的视图属性都应该在onBindViewHolder()
方法中设置。@MikeM。我正在使用onBindViewHolder()方法进行设置。这可能就是您的视图
再次具有OnClickListener
的原因。回收后,它将被传递到onBindViewHolder()
中,以便再次使用。如果您在该方法中无条件地设置侦听器,这就是原因。
@Override
public void onViewRecycled(MyViewHolder holder) {
super.onViewRecycled(holder);
holder.imageId.setOnClickListener(null);
}