Android 删除任何视图时,未调用PageAdapter的destroyItem函数

Android 删除任何视图时,未调用PageAdapter的destroyItem函数,android,android-viewpager,android-pageradapter,Android,Android Viewpager,Android Pageradapter,我正在开发一个android应用程序,并在视图中使用viewpager。我正在使用PagerAdapter显示viewpager中选项卡的视图。 我必须动态添加/删除一些选项卡。当我在视图中添加任何选项卡时,就会调用实例化Item函数,并成功添加选项卡。但是,当我从viewpager中删除任何选项卡时,应该调用destroyItem函数,但它没有被调用,选项卡的视图也没有被删除。 这是我用来添加/删除选项卡的代码 public List<View> viewsList = new A

我正在开发一个android应用程序,并在视图中使用viewpager。我正在使用PagerAdapter显示viewpager中选项卡的视图。 我必须动态添加/删除一些选项卡。当我在视图中添加任何选项卡时,就会调用实例化Item函数,并成功添加选项卡。但是,当我从viewpager中删除任何选项卡时,应该调用destroyItem函数,但它没有被调用,选项卡的视图也没有被删除。 这是我用来添加/删除选项卡的代码

public List<View> viewsList = new ArrayList();
public HashMap<Integer, View> GridViewList = new HashMap<>();

MyAdapter myAdapter = new MyAdapter();
viewPager.setAdapter(myAdapter);
viewPager.setOffscreenPageLimit(myAdapter.getCount() + 1);

    private class MyAdapter extends PagerAdapter {
    public MyAdapter() {
        super();
    }

    @Override
    public int getCount() {
        return viewsList.size();
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        View v = viewsList.get(position).rootView;
        container.addView(v, 0);
        return v;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object view) {
        container.removeView((View)view);
    }

    @Override
    public boolean isViewFromObject(View view, Object key) {
        return key == view;
    }
}
当我删除任何视图时,我使用以下方法:

viewsList.remove(GridViewList.get(Id));
GridViewList.remove(Id);
myAdapter.notifyDataSetChanged();
但在android中,当我从适配器中删除任何选项卡及其视图时,都不会调用destroyItem函数。如果有人对此有任何想法,请帮助我


非常感谢你的帮助

迟到,但是:您需要实现
getItemPosition
,以便调用
destroyItem
。在这种情况下,类似这样的方法应该有效:


干杯,埃里克,参加晚会永远不晚。
viewsList.remove(GridViewList.get(Id));
GridViewList.remove(Id);
myAdapter.notifyDataSetChanged();
@Override public int getItemPosition(Object itemIdentifier) {
  int index = viewsList.indexOf(itemIdentifiers);
  return index == -1 ? POSITION_NONE : index;
}