android– 如何从FragmentPagerAdapter中删除片段?

android– 如何从FragmentPagerAdapter中删除片段?,第1张

概述我知道这里有一些关于这方面的话题,但我找不到一个可以为我的案子工作的解决方案.我有一个使用自定义FragmentActivity和FragmentPagerAdapter的工作滑动库,它包含一个片段列表.在FragmentActivity中是一个ImageView“删除”.如果单击,则调用函数deleteMedia(),然后删除当前的片

我知道这里有一些关于这方面的话题,但我找不到一个可以为我的案子工作的解决方案.

我有一个使用自定义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中删除片段?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1098587.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存