我运用viewpager做了一个滑动的切换作用,作用还挺不错,详细完成作用网上许多,各位能够去找,不过在完成切换作用之后,由于需求需求,我需求获取领先显现的那个view,这就很让人厌恶了。viewpager有setOnPageChangeListener,里边有
@Override
public void onPageSelected(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
办法,我已开端是在onPageSelected办法中经过viewpager.getChildAt(arg0)办法,想获取当时显现的view。不过这样,超越3个view今后就会报空指针过错,获取的view就会为空,盯梢发现arg0大于2今后就获取view为空。所以我猜想viewpager里边最多有3个view,超越三个的时分就把旧的回收了。那么当时显现的,除了第一个和最终一个,那么都应该是中心的那个,也便是arg0为1的那个。所以我判别,除了第一个和最终一个,其它的arg0都等于1,发现不报错了,可是获取的view不对。后来经过getChildCount()办法发现,ChildCount有时分是2,有时分是3,这就让我很头疼了。
最终,发现viewpager还有一个办法findViewById,所以我就给每一个view设置一个id,id也便是创立时adapter里边的position,这样经过findViewById(arg0)就获取到了当时实际的view了。