ListView 的notifyDataSetChange(),相信很多人都用过,当item需要体现变化时,可通过该方法进行刷新。notifyDataSetChange()是刷新所有可视的item,如果只是想刷新某一个item,那么这显然不合适。因为当可视的item比较多,而且如果涉及到bitmap,全部统一都要刷新,这就会有点耗时,而且刷新bitmap时会出现闪屏,用户体验不好。
刷新指定item,主要用到ListView的getChildAt(int position)方法,该方法是获取ListView众多可视的item中位置处于position的view。例如:getChildAt(1),获取可视的第一个item,这个item的index有可能是1(当 FirstVisiblePosition=0时),也有可能是2(FirstVisiblePosition=1,因为index=0的那个item已被移出屏幕了)。
了解了这个方法以后,我们看下核心代码(该方法主要实现item值加1.):
public void updateItem(int itemIndex) {
int oldContent=Integer.parseInt(dataList.get(itemIndex)); //获取itemIndex的值
dataList.remove(itemIndex);//移除指定项目
int newContent = oldContent + 1; //新值为旧值加1
dataList.add(itemIndex, newContent + "");//添加到指定位置
/**以上主要实现dataList指定item值加1**/
View mView = lv.getChildAt(itemIndex-lv.getFirstVisiblePosition());//获取指定itemIndex在屏幕中的view
ViewHolder mViewHolder = (ViewHolder) mView.getTag();
mViewHolder.tv.setText(dataList.get(itemIndex));//重新设值
}
供各位参考。。。。。