突然间加新需求要求相机自己写不调用系统,然后拍照后进行查看类似手机相册的翻页功能,可以对照片进行删除,相机目前还有点毛病,对焦总是初始化进入相机页面才会对焦准确。还是说说这个翻页吧,首先我用的是viewpager加载fragment的方式进行翻页滑动。问题就出在我进行删除的时候,fragmentstatepageradapter的notifyDatasetChanged()方法刷新数据源死活刷不出来。在adapter中重新添加了set数据的方法把之前fragmentmanager中的fragment全部移除然后再重新添加数据,同时对getItemPosition()和nitifyDataSetChanged()方法进行改写就好了。。
有参考其他人的博客,突然找不到地址了,找到了贴上链接感谢给我灵感的作者
class MyPagerAdapter extends FragmentStatePagerAdapter{ private List<ImageFragment> list; private int mSize; private int mCount=0; private FragmentManager fm; public MyPagerAdapter(FragmentManager fm,List<ImageFragment> list) { super(fm); this.list=list; this.fm=fm; mSize = list == null?0:list.size(); } @Override public Fragment getItem(int position) { return list.get(position); } @Override public int getItemPosition(Object object) { if(mCount>0){ mCount--; return POSITION_NONE; } return super.getItemPosition(object); } @Override public int getCount() { return mSize; } public void setList(List<ImageFragment> list) { if(this.list != null){ FragmentTransaction ft = fm.beginTransaction(); for(Fragment f:this.list){ ft.remove(f); } ft.commit(); ft=null; fm.executePendingTransactions(); } this.list = list; mSize=list==null?0:list.size(); notifyDataSetChanged(); } @Override public void notifyDataSetChanged() { mCount=getCount(); super.notifyDataSetChanged(); } }