
我知道这里有一些关于这方面的话题,但我找不到一个可以为我的案子工作的解决方案.
我有一个使用自定义FragmentActivity和FragmentPagerAdapter的工作滑动库,它包含一个片段列表.
在FragmentActivity中是一个ImageVIEw“删除”.如果单击,则调用函数deleteMedia(),然后删除当前的片段,并显示以下片段.
在我的例子中我该如何做到这一点?
FragmentActivity:
public class galleryPagerActivity extends FragmentActivity implements OnClickListener { private Intent intent; private SharedPreferences settings; private PagerAdapter mPagerAdapter; private VIEwPager mPager; private List<Fragment> fragments; private List<whiteboardMedia> wiList; private int selectedposition; private linearLayout lltop; private TextVIEw tvtop; private ImageVIEw delete; private ImageVIEw share; private TextVIEw tvCounter; private TextVIEw tvfilename; private TextVIEw tvfilesize; private TextVIEw tvDate; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); try { super.setContentVIEw(R.layout.gallery_pager); intent = getIntent(); Type collectionType = new Typetoken<List<whiteboardMedia>>(){}.getType(); wiList = gson.fromJson(intent.getStringExtra("wiList"), collectionType); selectedposition = intent.getIntExtra("position", 1); lltop = (linearLayout) findVIEwByID(R.ID.lltop); lltop.setonClickListener(this); tvtop = (TextVIEw) findVIEwByID(R.ID.tvtop); tvtop.setonClickListener(this); delete = (ImageVIEw) findVIEwByID(R.ID.imgDelete); delete.setonClickListener(this); share = (ImageVIEw) findVIEwByID(R.ID.imgShare); share.setonClickListener(this); tvCounter = (TextVIEw) findVIEwByID(R.ID.tvCounter); tvfilename = (TextVIEw) findVIEwByID(R.ID.tvfilename); tvfilesize = (TextVIEw) findVIEwByID(R.ID.tvfilesize); tvDate = (TextVIEw) findVIEwByID(R.ID.tvDate); createContextMenu(); initDropBox(); } catch (Exception e) { Log.e("galleryPagerActivity", e.getLocalizedMessage()); } } /** * Initialise the pager */ private voID initialisePager() { mPager = (VIEwPager) super.findVIEwByID(R.ID.vIEwpager); mPager.setAdapter(this.mPagerAdapter); mPager.setonPagechangelistener(new galleryPagelistener(tvCounter, tvfilename, tvfilesize, tvDate, wiList)); mPager.setCurrentItem(selectedposition, true); updatePage(selectedposition); } public voID updatePage(int position) { int focusedPage = position + 1; Log.i("onPageSelected", "page selected " + position); whiteboardMedia wiImage = wiList.get(position); String imageDate = "N/A"; try { Date dateTaken= new Date(); //wiImage.getDate(); SimpleDateFormat sdf = new SimpleDateFormat("yy/MM/dd"); imageDate = sdf.format(dateTaken); } catch (Exception e) { } try { tvCounter.setText(focusedPage + "/" + wiList.size()); tvfilename.setText(wiImage.getfilename()); tvfilesize.setText(wiImage.getSize() + "a"); tvDate.setText(imageDate); } catch (Exception e) { } } @OverrIDe protected voID onResume() { super.onResume(); } @OverrIDe public voID onDestroy() { super.onDestroy(); } private whiteboardMedia getActivewhiteboardImage() { return wiList.get(mPager.getCurrentItem()); } private final int DELETE = 1; @OverrIDe public boolean onCreateOptionsMenu(Menu menu) { menu.add(1, DELETE, 2, R.string.delete).setIcon(R.drawable.menu_btn_trash); return true; } @OverrIDe public boolean onoptionsItemSelected(MenuItem item) { switch (item.getItemID()) { case DELETE: deleteMedia(); return true; } return super.onContextItemSelected(item); } @OverrIDe public voID onClick(VIEw v) { if (v == delete) { deleteMedia(); } } private voID deleteMedia() { // Todo delete the active Fragment and display the next Fragment in the List } /****************************************************************************** * Context Menu *****************************************************************************/ private voID createContextMenu() { // context menu stuff } @OverrIDe protected Dialog onCreateDialog(int ID) { // stuff }}FragmentPagerAdapter:
public class galleryPagerAdapter extends FragmentPagerAdapter {private final List<Fragment> fragments;public galleryPagerAdapter(FragmentManager fm, List<Fragment> fragments) { super(fm); this.fragments = fragments;}@OverrIDepublic Fragment getItem(int position) { return this.fragments.get(position);}@OverrIDepublic int getCount() { return this.fragments.size();}}感谢帮助!
解决方法:
首先,我建议您考虑更改FragmentPagerAdapter,使其看起来更像the sample.您通常不会保留片段列表,而不仅仅是ArrayAdapter通常包含行的视图列表.通常,您可以根据需要创建片段,而其他人则保留列表.
然后,要删除某些内容,请将其从模型数据中删除(FragmentPagerAdapter通常包含的内容).确保getCount()将返回正确数量的项目.然后,在FragmentPagerAdapter上调用notifyDataSetChanged(),它应该触发重绘VIEwPager.
总结以上是内存溢出为你收集整理的android – 如何从FragmentPagerAdapter中删除片段?全部内容,希望文章能够帮你解决android – 如何从FragmentPagerAdapter中删除片段?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)