android - listview 数据变化触发了开关判定,怎么搞
PHPz
PHPz 2017-04-17 14:26:30
[Android讨论组]

开关的判定我写在了 Adapter 的 getView 里,当开关从关变成开会弹出一条toast

@Override
public View getView(final int pos, View convertView, ViewGroup parent) {
 if (isChecked) {
 Toast...;
 }
}

但是这样就会出现一个问题,比如说第0条数据是关的,第1条数据是开的,删除第0条数据,也会触发以上代码
因为 pos == 0 的开关状态变化了。

我想,可能不该在 getView 里用 pos 判定,但是在哪用什么呢

在 Activity 里监听 ListView 里的一个 Switch 吗,给个思路怎么写呢……
(我搜了一下,类似的基本还是在 getView 中更改 比如 或者 以及)

PHPz
PHPz

学习是最好的投资!

全部回复(2)
PHPz

我认为应该放在isChecked被改变的地方toast。
getView作用是为listview准备视图,当删除一个list条目时,肯定需要调用ArrayAdapter.notifyDataSetChanged(),继而getView被调用以提供新的视图,但这时isChecked并不一定会改变。

PHP中文网

你adpter的每一个itemview的状态应该对应着相应的数据item啊,什么if (isChecked)啊。。
不会类似于list.get(position).isChecked()吗?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号