http://blog.youkuaiyun.com/lilu_leo/article/details/7681380 这篇文章使用了 notifyDataSetChanged
可以使用getView方法只需要更新一行即可
public void changeImageVisable(int position) {
int start = mListView.getFirstVisiblePosition();
int end = mListView.getLastVisiblePosition();
View view;
/* 点击不同位置,
* 如果前一次的item还在屏幕内部并且还是可见的,把前一次的item置为不可见,需要getView
* 如果前一次的item已经不在屏幕内部,重置mLastPosVisible即可
* */
if (mLastPosition != position) {
if (mLastPosVisible) {
mLastPosVisible = false;
if ((mLastPosition>=start && mLastPosition <=end)) {
view = mListView.getChildAt(mLastPosition-start);
getView(mLastPosition, view, mListView);
}
}
}
mLastPosition = position;
mLastPosVisible = !mLastPosVisible;
view = mListView.getChildAt(position-start);
getView(position, view, mListView);
}
}
getView中增加
public View getView(int position, View convertView, ViewGroup parent) {
Holder holder;
if(convertView == null ) {
LayoutInflater inflater = LayoutInflater.from(mContext);
convertView = inflater.inflate(R.layout.list_item, parent, false);
holder =new Holder();
holder.textView = (TextView)convertView.findViewById(R.id.textView);
holder.UEFAView = (ImageView)convertView.findViewById(R.id.image_uefa);
holder.mascotView = (ImageView)convertView.findViewById(R.id.image_mascot);
holder.hint = convertView.findViewById(R.id.hint_image);
convertView.setTag(holder);
} else {
holder = (Holder) convertView.getTag();
}
holder.textView.setText("Hello,It is " + position);
<span style="color:#ff0000;"> if ((position == mLastPosition) && mLastPosVisible) {
holder.hint.setVisibility(View.VISIBLE);
} else {
holder.hint.setVisibility(View.GONE);
}</span>
return convertView;
}