美文网首页
ViewPager2动态删除Fragment 显示问题

ViewPager2动态删除Fragment 显示问题

作者: MarkKelp | 来源:发表于2020-05-15 09:41 被阅读0次

    Viewpage2 动态删除fragment时,显示的效果为删除的是Fragment列表的最后一个,不管怎么调用notifyItemRemoved或者删除fragments数据源中指定下标的数据,依旧不行。哪怕打印每个数据源的hashcode,都显示删除操作正常,数据源也正常,但是显示效果依旧为删除最后一个fragment !!!

    需要重写下面两个方法解决:

    准备数据源mFragments时 初始化一下mFragmentHashCodes数据源

    private List<Fragment> mFragments;//数据源
    private List<Integer> mFragmentHashCodes;//数据源中fragment的hashcode 一对一 增删时注意保持一致
    

    而后重写FragmetnStateAdapter中的

    @Override
    public long getItemId(int position) {
        return mFragments.get(position).hashCode();
    }
    
    @Override
    public boolean containsItem(long itemId) {
        return mFragmentHashCodes.contains(itemId);
    }
    

    问题解决!

    相关文章

      网友评论

          本文标题:ViewPager2动态删除Fragment 显示问题

          本文链接:https://www.haomeiwen.com/subject/gdpqohtx.html