私はアンドロイドアプリケーションで作業中で、ビューでビューページを使用しています。 PagerAdapterを使用して、ビューページ内のタブのビューを表示しています。 いくつかのタブを動的に追加/削除する必要があります。それに加えてタブを追加すると、instantiateItem関数が呼び出され、タブが正常に追加されています。しかし、viewpagerから任意のタブを削除すると、destroyItem関数を呼び出す必要がありますが、呼び出されず、Tabのビューが削除されません。 タブを追加/削除するために使用しているコードです。私はそれと一緒にすべてのタブを追加すると、私は、以下の方法を使用して追加していPageAdapterの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;
}
}
ビュー
View view = new View(); // I am making Custom View here
viewsList.add(view);
GridViewList.put(Id, view);
myAdapter.notifyDataSetChanged();
だと私はすべてのビューを削除すると、私は法の下に使用します。
viewsList.remove(GridViewList.get(Id));
GridViewList.remove(Id);
myAdapter.notifyDataSetChanged();
しかし、タブを削除するとdestroyItem関数が呼び出されず、アンドロイドのアダプタからビューが表示されます。誰かがこれについて考えているなら、私を助けてください。
ありがとうございました。