android - 如何以编程方式调用 ViewPager 的下一页?

标签 android android-layout android-fragments android-viewpager android-view

我正在创建 ViewPager 并希望在 Button.OnClickListener 上调用下一个 Pager。从 Activity 中的以下代码设置适配器:

@EActivity(R.layout.activity_city)
public class CountrySelectionActivity extends Activity {

@ViewById ViewPager viewPager;
@Bean CustomAdapter customAdapter;

@AfterViews
void afterViewCreated(){
    viewPager.setAdapter(customAdapter);
  }
}

这是 CustomAdapter 类的代码:

@EBean
public class CustomAdapter extends PagerAdapter {

public CustomAdapter(Context context) {
    mContext = context;
    loadData();   // loading data as in List
}

......
......

@Override
public boolean isViewFromObject(View view, Object object) {
    return view == object;
}

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

@Override
public Object instantiateItem(ViewGroup container, int position) {
    TextView firstCountry;
    TextView secondCountry;

    LayoutInflater layoutInflater = LayoutInflater.from(mContext);
    View view = layoutInflater.inflate(R.layout.country_pager_item, container, false);
    ....
    ....
}

一切正常。我可以看到 ViewPager 在每个 pages 上加载了这两个国家。

我还可以滑动页面(上一页和下一页)。但我想在点击 TextView 等后立即转到下一个寻呼机。是否可以在 ViewPager 中实现?

最佳答案

当然!您只需调用 viewPager.setCurrentItem(...)

编辑:

如果您想知道如何从您的 Adapter 中调用此方法,下面是一个示例:

public class CustomAdapter extends PagerAdapter {

    // ... other methods

    public static interface Callback {
        public void onNextClick(int nextPage);
    }

    private Callback callback;

    public void setCallback(Callback callback) {
        this.callback = callback;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        TextView firstCountry;
        TextView secondCountry;

        LayoutInflater layoutInflater = LayoutInflater.from(mContext);
        View view = layoutInflater.inflate(R.layout.country_pager_item, container, false);

        secondCountry.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (callback != null){
                        callback.onNextClick(2);
                    }
                }
            });
    }
}

在你的 Activity 中:

@AfterViews
void afterViewCreated(){
    customAdapter.setCallback(new Callback() {
        @Override
        public void onNextClick(int nextPage) {
           viewPager.setCurrentItem(nextPage);
        }
    });
    viewPager.setAdapter(customAdapter);
  }
}

关于android - 如何以编程方式调用 ViewPager 的下一页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38968574/

相关文章:

android - 使用 viewpager 附加的当前查看 fragment 的访问实例

android - 在 FrameLayout 中将 Progressbar 设置在 WebView 的中心

Android:如何显示JSON Post结果

android - setcontent的textview中出现空指针异常

android - layout_width 和 layout_height 不适用于主题中的 edittext

安卓慢速软键盘打开

android - 让Fragments使用相同的方法

javascript - React Native 将 base64 图像保存到相册

android - 创建文件夹并使 ES 文件资源管理器添加我的应用程序的图标

java - android.support.v7.widget.AppCompatTextView 无法转换为 android.widget.RelativeLayout