一.需求
项目中有这样的需求,ViewPager中添加了几个View。然后在某个实际需要替换原有的某个位置上的View。
二.代码
1.PagerAdapter类中
public class AuthListAdapter extends PagerAdapter {
private int curUpdatePager;
public void setPosition(int curUpdatePager) {
this.curUpdatePager = curUpdatePager;
}
@Override
public int getItemPosition(@NonNull Object object) {
View view = (View) object;
if (curUpdatePager == (Integer) view.getTag()) {
return POSITION_NONE;
} else {
return POSITION_UNCHANGED;
}
}
}
2.某个时机替换View
private ListAdapter mAdapter;//Adapter
private List<View> mViewList;//List集合
/替换默认的View为指定的View
View view = getNewView();
if (null != view && null != mAdapter) {
//告知Adapter替换的位置
mAdapter.setPosition(nextAuthIndex);
//集合中删除位置对应的数据
mViewList.remove(nextAuthIndex);
//集合中对应位置更新为最新的View
mViewList.add(nextAuthIndex, view);
//Adapter数据刷新
mAdapter.notifyDataSetChanged();
}