好几天没有写博了,前几天一直在忙毕业答辩,之后还回家了一趟,一直没有写。
今天实习时候,使用listview的adapter.notifyDataSetChanged(),方法刷新数据时候发现会发生界面闪烁的问题。后来知道了可以在adapter写一个updateView方法来实现一个item的局部更新,不像notifyDataSetChanged方法把全部数据刷新一遍。调用的时候只要调用adapter.updateView(position)就可以了。
public void updateView(int itemIndex) {
int firstVisible = listview.getFirstVisiblePosition();
int lastVisible = listview.getLastVisiblePosition();
if (itemIndex >= firstVisible && itemIndex <= lastVisible) {
ViewHolder holder = (ViewHolder) (listview.getChildAt(itemIndex - firstVisible).getTag());
//具体更新操作
}
}
效果看起来差不多哈