gpt4 book ai didi

android - 在 Viewpager 中获取当前选中项的 subview

转载 作者:太空狗 更新时间:2023-10-29 13:09:35 25 4
gpt4 key购买 nike

当我在 viewpager 中从项目 0 到 2 获得 subview 时,它工作正常。当我尝试从 3 开始获取 subview 时,它返回 null。如何获取viewpager当前选中的所有 subview ?

已编辑:

View view = viewPager.getChildAt(viewPager.getCurrentItem());

当 viewPager.getCurrentItem() 达到 3 时, View 返回 null。

最佳答案

您需要访问您在 ViewPager 中使用的 Fragments

在这个答案中 https://stackoverflow.com/a/39274141/1559852我试图解释如何修改您的 ViewPager 的 适配器 o 使您在 ViewPager 中使用的 fragment 可访问。

在链接中实现代码后,您将能够访问您的 fragment 及其 View 。

为您的 fragment 定义一个公共(public)方法,如下所示:

public View getMyFragmentView(){
return this.mView();
}

最后添加一个 OnPageChangeLsitener 到您的 ViewPager,如下面的代码。

    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {

@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}

@Override
public void onPageSelected(int position) {
// Here's your instance
final YourFragment fragment =(YourFragment)yourPagerAdapter.getRegisteredFragment(position);
final View theViewYouWantToAccess = yourFragment.getMyView();

}

@Override
public void onPageScrollStateChanged(int state) {

}
});

编辑:在您的 ViewPager 适配器中,您可以将 Fragment 注册到 SparseArray

@Override
public Fragment getItem(int position) {
final YourFragment fragment = new YourFragment();

// Register your fragment to Sparse Array here
registeredFragments.put(position, fragment);

return fragment;
}

关于android - 在 Viewpager 中获取当前选中项的 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42827879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com