标签:android blog http io os ar for 数据 sp
Quote: 引用 14 楼 gqjjqg 的回复:这个思路其实挺简单的,ListView只是负责显示而已,adapter里保存实际的数据1. 点了全选,把adapter里的数据全标记为选中,刷新ListView让当前显示的View全选中。2. 滑动或者拖动,对单个点击,就对应的把adapter里的数据标记选中或者非选中,刷新对应的View。3. 点删除则删除adapter里的数据,并且刷新ListView。关键就一句话:不要依赖ListView控件的子View 去检查是否有标记。你的问题关键在于getView时做了不应该做的事情。getView 推荐只设置显示UI的事情,而不处理数据,否则影响UI显示效率。//这部分应该在点击删除时处理。 if (holder.checkbox.isChecked() == true) { deleteMap.put(position, (String)holder.id.getText()); } else { deleteMap.remove(position);//把之前选中之后又取消的从hashmap中清除 }您的回答我很收益。如您方便,我再问点吧。我对MVC有一知半解,您说的大概和它类似吧?通过【应用】→【逻辑】→【显示】实现程序。但是我开始有点混乱了,上面这段 if (holder.checkbox.isChecked())应该算是“逻辑”的部分,但是要怎么把它从“显示”中分离出来呢(我的代码都是从别人的代码那里参考分析来的,所以没有例子我还真不明白呢)?您是否有相关的简单例子能给我看看呢?另外对于下面的代码,应该算是“逻辑”还是“显示”啊?if(checkVisible) holder.checkbox.setVisibility(View.VISIBLE); else holder.checkbox.setVisibility(View.GONE);
这个思路其实挺简单的,ListView只是负责显示而已,adapter里保存实际的数据1. 点了全选,把adapter里的数据全标记为选中,刷新ListView让当前显示的View全选中。2. 滑动或者拖动,对单个点击,就对应的把adapter里的数据标记选中或者非选中,刷新对应的View。3. 点删除则删除adapter里的数据,并且刷新ListView。关键就一句话:不要依赖ListView控件的子View 去检查是否有标记。你的问题关键在于getView时做了不应该做的事情。getView 推荐只设置显示UI的事情,而不处理数据,否则影响UI显示效率。//这部分应该在点击删除时处理。 if (holder.checkbox.isChecked() == true) { deleteMap.put(position, (String)holder.id.getText()); } else { deleteMap.remove(position);//把之前选中之后又取消的从hashmap中清除 }
listview全选后无法删除不在显示区的item
原文地址:http://www.cnblogs.com/shaochuyun57/p/4002029.html