firstVisiblePosition = 0
lastVisiblePosition = 4
position = 9 mChildren这个方法里面的item都是可见的item控件, 如果直接用position在getChildAt这个方法里面获取到的View不是对应的View, ListView显示出来的View都是重新从0开始排索引, 真实的索引是需要计算的,如果你需要用position获取你对应的View,就需要用
position - listView.getFirstVisiblePosition() 之后的结果才是你要的索引,再用getChildAt获取到的View就是你position对应的View了
局部更新的方法:
public void notifyDataSetChanged(ListView listView, int position) {
int firstVisiblePosition = listView.getFirstVisiblePosition();
int lastVisiblePosition = listView.getLastVisiblePosition();
if (position >= firstVisiblePosition && position <= lastVisiblePosition) {
View view = listView.getChildAt(position - firstVisiblePosition);
getView(position, view, listView);
}
}