Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从回收视图中删除“OnClickListeners”?_Android_Android Layout_Listview - Fatal编程技术网

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);
}