假如你的项目中出现了,在上下滑动时。有一些控件在不停的变化,那么我可以告诉你这是因为缓存所引起的.
那么ListView的缓存是什么?
在我看来这是一个很棒的效果,就跟整个Android系统一样,当你Android手机的内存在消耗的时候并不一定代表手机的运行速度会变慢。这是因为Android自带的缓存,这样可以保证这个app在被重新打开的时候,界面可以立马去恢复。不至于每次进入app的时候还要去等很长时候,等待app的加载。这是题外话啊
ListView只会缓存当前所展示的item。当用户在滑动的时候会不停的进行缓存,清除缓存的这个过程。打个比方{1,2,3,4}这里有四个数字,那么当向上滑动的时候那么就会变成{2,3,4,5}。将1清除掉,将5缓存。反之向下滑动也是一样
那么该如何避免在ListView缓存过程中 控件 位置 错乱的变化呢?
1:将ListView的缓存关闭,毫无疑问这样做就相当与丢掉了Android自带的优势。
2:在Adapter中getView方法进行控制
如何控制?
因为大家在getView方法中一般都是需要对一些值进行判断,然后展示出不同的效果。那么我就用这个if来为大家演示
错误的if:
if(postion%2==0){
view.setText("0");
}
这样书写得到的结果是什么?view 的值永远都会是0,这也就是大家之所以会 控件位置错乱的根本原因
只要大家在判断的同时加上else就ok,像这样:
if(postion%2==0){
view.setText("0");
}else{
view.setText("1");
}
可能说的有点怪,原谅lz的文采