android的listView有滚动条时(即实际Item数比显示出来的Item数多),点击item变色事件报空指针错,该如何解决

   阅读
android的listView有滚动条时(即实际Item数比显示出来的Item数多),点击item变色事件报空指针错
android的listView有滚动条时(即实际Item数比显示出来的Item数多),其点击item变色代码入下:
for(int i=0;i<parent.getCount();i++){
View v=parent.getChildAt(i);
if (position == i) {
v.setBackgroundColor(0xFFB679D4);
} else {
v.setBackgroundColor(Color.TRANSPARENT);//此行空指针错
}
}
点击时v.setBackgroundColor(Color.TRANSPARENT);报空指针错。
错误分析:因为实际Item数比显示出来的Item数多,即parent.getCount()>parent.getChildCount(),所以View v=parent.getChildAt(i);当v不在显示的view内时,得到的v为null。所以报错
尝试方法1:parent.getCount()改成parent.getChildCount(),此时出现的新问题是往下滑动时,没有点击的Item也会变色。
尝试方法2:parent.getCount()改成一个整数,该整数=parent.getChildCount(),此时没有往下滑动时正常,但是往下滑动时并不能点击变色。
尝试方法3:做分页,代价太大。所以放弃
麻烦各位给出解决方案~~困扰很久了~


------解决方案--------------------
上面这段代码是写在ListView的点击事件中还是写在ListView的Adapter中啊?如果是直接写在点击事件中的话,建议你写一个Adapter类,继承BaseAdapter,然后在类中的getView方法中实现item变色的功能。。。。
阅读
上一篇:实现类,该怎么解决 下一篇:返回列表