我想知道的当前页面位置ViewPager
。我创建一个适配器并将该适配器设置为ViewPager
。现在,我想知道当前页码或当前视图的位置,因为我想在该特定页面上启动一些其他事件。
我用来viewPager.setCurrentItem(1);
设置第一项。
是否有类似的方法来获取当前页面?
Answers:
在最新的软件包中,您也可以使用
vp.getCurrentItem()
要么
vp是viewPager,
pageListener = new PageListener();
vp.setOnPageChangeListener(pageListener);
您必须为viewPager放置页面更改侦听器。viewPager上没有获取当前页面的方法。
private int currentPage;
private static class PageListener extends SimpleOnPageChangeListener{
public void onPageSelected(int position) {
Log.i(TAG, "page selected " + position);
currentPage = position;
}
}
setOnPageChangeListener()
已弃用,请addOnPageChangeListener()
改用。
有一种方法object_of_ViewPager.getCurrentItem()
可以返回视图分页器当前浏览页面的位置
如果您只想要该职位,vp.getCurrentItem()
将其提供给您,则无需为此单独应用onPageChangeListener()。
您将发现不建议使用setOnPageChangeListener,请使用addOnPageChangeListener,如下所示:
ViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if(position == 1){ // if you want the second page, for example
//Your code here
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
对于此问题,Onpagechange侦听器是最好的,但它还会有一个小错误,即它不会检测到第0个位置的开始时间。一旦更改了页面,它将开始检测到页面选择的位置...为此问题,我找到了最简单的解决方案
1.您必须保持所选的位置值,然后使用它。...
2.情况1:位置的开头始终为零...。
情况2:假设您设置了当前项目,则将设置为将价值转化为维持地位
3.然后在活动中使用维持来做您的行动...
Public int maintain=0;
myViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i2) {
//Toast.makeText(MyActivity.this, i+" Is Selected "+data.size(), Toast.LENGTH_SHORT).show();
}
@Override
public void onPageSelected( int i) {
// here you will get the position of selected page
maintain = i;
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
updateButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MyActivity.this, i+" Is Selected "+data.size(), Toast.LENGTH_SHORT).show();
data.set(maintain, "Replaced "+maintain);
myViewPager.getAdapter().notifyDataSetChanged();
}
});
getCurrentItem()
,实际上并没有为我固定的第一页和最后一页给出正确的位置,并添加了以下代码:
public void CalcPostion() {
current = viewPager.getCurrentItem();
if ((last == current) && (current != 1) && (current != 0)) {
current = current + 1;
viewPager.setCurrentItem(current);
}
if ((last == 1) && (current == 1)) {
last = 0;
current = 0;
}
display();
last = current;
}
viewpager.i中没有任何方法getCurrentItem()已检查API
不建议使用setOnPageChangeListener()方法。请改用 addOnPageChangeListener(OnPageChangeListener)。
您可以使用OnPageChangeListener并获取onPageSelected()
方法内部的位置,这是一个示例:
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
Log.d(TAG, "my position is : " + position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
或者只是使用getCurrentItem()来获取真实位置:
viewPager.getCurrentItem();