开关的判定我写在了 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 中更改 比如 或者 以及)
我认为应该放在isChecked
被改变的地方toast。getView
作用是为listview准备视图,当删除一个list条目时,肯定需要调用ArrayAdapter.notifyDataSetChanged()
,继而getView
被调用以提供新的视图,但这时isChecked
并不一定会改变。
你adpter的每一个itemview的状态应该对应着相应的数据item啊,什么if (isChecked)啊。。
不会类似于list.get(position).isChecked()吗?