解决:特殊应用场景下--Android 在list view 中使用switch 遇到的switch 重置的问题

在特殊应用场景中,Android ListView的每个列表项包含一个Switch按钮,根据数据设置初始状态。然而,当设置为开启的Switch滑出屏幕再滑回时,可能会自动关闭。问题源于ListView复用convertView,新的item使用了旧的convertView,导致旧的CheckedChangeListener触发,改变布尔值。解决方法是在setChecked()之前移除列表项的CheckedChangeListener。通过分析源码和抛出异常获取调用栈有助于定位和解决问题。
摘要由CSDN通过智能技术生成

首先说一下应用场景和问题:

项目需要加载一个listview,每个list item中有一个switch 按钮。list item中的switch 在初始化时,需要根据数据对应的boolean 值来设置switch的开关状态。我调用的是setChecked()来设置状态。switch 的开关侦听函数 为修改一个之前初始化的boolean值。

这样遇到了一个问题,就是当设置为On的switch在滑出界面的时候,再将其滑入屏幕,switch有可能自动就变为关,我查看那个依据的boolean值,也被改了。

我明明没有点击按钮,为什么switch自己就换过去了???


发现问题:

百思不得其解之后,我在工程中寻找修改那个Boolean值得代码,只有在switch的监听函数中才发现有!

只能 在修改Boolean 值处加上主动throw Exception,并try catch代码  的方式获取前前后后的调用栈。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值