Android 页面滚动后无法重置ViewPager内容

Android 页面滚动后无法重置ViewPager内容,android,android-viewpager,fragment,Android,Android Viewpager,Fragment,我有一个视图寻呼机,它有一个文本视图,最初设置为view.INVISIBLE,当页面聚焦时,它会淡入 但当我滚动到下一页并查看上一个视图时,文本视图处于可见状态,但应该处于不可见状态 我尝试通过存储上一个索引将textview设置为不可见。但这并不是重置文本视图 index = indexCalculator(index); Log.d("HeadIndex",""+index); CustomViewPagerAdapter customViewPagerAdapter = (

我有一个视图寻呼机,它有一个文本视图,最初设置为view.INVISIBLE,当页面聚焦时,它会淡入

但当我滚动到下一页并查看上一个视图时,文本视图处于可见状态,但应该处于不可见状态

我尝试通过存储上一个索引将textview设置为不可见。但这并不是重置文本视图

index = indexCalculator(index);
    Log.d("HeadIndex",""+index);
    CustomViewPagerAdapter customViewPagerAdapter = (CustomViewPagerAdapter) viewPagerAdapter;
    ImageSliderFragment fragment = customViewPagerAdapter.getFragment(index);
    fragment.getView().findViewById(R.id.head_data).setVisibility(View.INVISIBLE); 
Canyone帮助我将视图设置为不可见

更新代码:

private class CustomViewPagerAdapter extends FragmentStatePagerAdapter {
    private Map<Integer, ImageSliderFragment> mPageReferenceMap = new HashMap<>();

    public CustomViewPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        ImageSliderFragment imageSliderFragment = new ImageSliderFragment();
        Bundle args = new Bundle();
        args.putInt(AppConstants.BUNDLE_KEY_FOR_FRAGMENT_POSITION,position);
        imageSliderFragment.setArguments(args);
        mPageReferenceMap.put(Integer.valueOf(position),imageSliderFragment);
        return imageSliderFragment;
    }

    @Override
    public int getCount() {
        return AppConstants.NUM_PAGES;
    }

    @Override
    public int getItemPosition(Object object) {
        return POSITION_NONE;//super.getItemPosition(object);
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        return  super.instantiateItem(container, position);
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        super.destroyItem(container, position, object);
    }

    public ImageSliderFragment getFragment(int key) {
        return mPageReferenceMap.get(key);
    }
}
}


我已经实现了对类的回调

在XML上设置视图的可见性

android:visibility=“消失”


然后在CustomPagerAdapter上更改onPageSelected()方法查看的可视性

共享更多代码。你在CustomViewPageRadapter中做什么?@EE66已经添加了适配器代码…我也在做同样的事情,在onPageSelected中设置一个回调,并能够显示文本视图。但当视图滑动到下一个并再次向后滚动时,视图仍然可见。为此,我使用了上面发布的第一组代码再次将视图设置为“不可见”,但这不起作用。在onPageSelected()中,可以隐藏其他文本视图。其他片段/视图上的那些。是fadein动画造成了问题。当页面滚动时,我没有取消动画。感谢您的意见和帮助:)
public class CircularViewPagerHandler implements ViewPager.OnPageChangeListener {
private ViewPager mViewPager;
private int         mCurrentPosition;
private int         mScrollState;

///For determining swipe direction
private static final float thresholdOffset = 0.5f;
private boolean scrollStarted, checkDirection;

private HeadDataListener headDataListener;

public CircularViewPagerHandler(final ViewPager viewPager,HeadDataListener listener) {
    mViewPager = viewPager;
    headDataListener = listener;
}

@Override
public void onPageSelected(final int position) {
    mCurrentPosition = position;
    headDataListener.showHead(position);
    Log.d("OnPageSelected",""+position);
}

@Override
public void onPageScrollStateChanged(final int state) {
    handleScrollState(state);
    mScrollState = state;
    if (!scrollStarted && state == ViewPager.SCROLL_STATE_DRAGGING) {
        scrollStarted = true;
        checkDirection = true;
    } else {
        scrollStarted = false;
    }
}

private void handleScrollState(final int state) {
    if (state == ViewPager.SCROLL_STATE_IDLE) {
        setNextItemIfNeeded();
    }
}

private void setNextItemIfNeeded() {
    if (!isScrollStateSettling()) {
         handleSetNextItem();
    }
}

private boolean isScrollStateSettling() {
    return mScrollState == ViewPager.SCROLL_STATE_SETTLING;
}

private void handleSetNextItem() {
    final int lastPosition = mViewPager.getAdapter().getCount() - 1;
    if(mCurrentPosition == 0) {
        mViewPager.setCurrentItem(lastPosition, false);
    } else if(mCurrentPosition == lastPosition) {
        mViewPager.setCurrentItem(0, false);
    }
}

@Override
public void onPageScrolled(final int position, final float positionOffset, final int positionOffsetPixels) {
    if (checkDirection) {
        if (thresholdOffset > positionOffset) {
            AppConstants.SWIPE_DIRECTION = 1;
        } else {
            AppConstants.SWIPE_DIRECTION = 2;
        }
        checkDirection = false;
    }
}