【RecyclerView】滑动后ItemView中Switch开关状态错乱

问题描述

当ItemView中包含需要设置状态变化回调的控件时,如Switch需要设置OnCheckedChangeListener,由于RecyclerView的复用机制,在新的条目进行OnBindViewHolder时,可能复用了某个之前回收的ItemView,如果此时直接根据List的数据对ItemView中的Switch开关进行初始化,会导致控件相应之前设置的回调,而回调中往往又会修改List中的数据,这样会导致之前被回收掉的条目对应的List中的数据(开关状态)莫名奇妙的被修改。

解决方法

解决方法:在onBindViewHolder()中,在根据List中的数据对这种需要设置状态变化监听的控件进行初始化时,先将控件的监听值为null,再赋值。

//todo 增加代码示例

你可能感兴趣的:(Android,APP开发问题录,android)