Cod*_*Yet 26
是.您可以动态地向ViewrAdapter添加或删除视图,并将其提供给ViewPager,并notifyDataSetChanged()从PagerAdapter 调用以向受影响的ViewPager发出有关更改的警报.但是,当您这样做时,您必须覆盖getItemPosition(Object)PagerAdapter,它会告诉他们当前显示的项目是否已更改位置.默认情况下,此功能设置为POSITION_UNCHANGED,因此如果不重写此方法,ViewPager将不会立即刷新.例如,
public class mAdapter extends PagerAdapter {
List<View> mList;
public void addView(View view, int index) {
mList.add(index, view);
notifyDataSetChanged();
}
public void removeView(int index) {
mList.remove(index);
notifyDataSetChanged();
}
@Override
public int getItemPosition(Object object)) {
if (mList.contains(object) {
return mList.indexOf(object);
} else {
return POSITION_NONE;
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果您只想暂时从显示中添加或删除视图,而不是从PagerAdapter的数据集添加或删除视图,请尝试使用setPrimaryItem(ViewGroup, int, Object)转到PagerAdapter数据中的特定视图以及destroyItem(ViewGroup, int, Object)从显示中删除视图.
Zso*_*agy 18
是的,由于ViewPager从PagerAdapter获取子视图,您可以在其上添加新页面/删除页面,并调用.notifyDataSetChanged()来重新加载它.
小智 16
是的,代码应该是这样的:
public int addPage(View view, int position) {
if ((position >= 0) && (position < getSize())) {
myPagerAdapter.mListViews.add(position, view);
myPagerAdapter.notifyDataSetChanged();
return position;
} else {
return -1;
}
}
public View removePage(int position) {
if ((position < 0) || (position >= getSize()) || (getSize()<=1)) {
return null;
} else {
if (position == mPager.getCurrentItem()) {
if(position == (getSize()-1)) {
mPager.setCurrentItem(position-1);
} else if (position == 0){
mPager.setCurrentItem(1);
}
}
View tempView = myPagerAdapter.mListViews.remove(position);
myPagerAdapter.notifyDataSetChanged();
return tempView;
}
}
Run Code Online (Sandbox Code Playgroud)
但是有一个错误.如果当前项目为0,并且要删除第0页,它将不会立即刷新屏幕,我还没有找到解决方案.
| 归档时间: |
|
| 查看次数: |
69159 次 |
| 最近记录: |