gpt4 book ai didi

java - setOnPageChangeListener 不调用 onPageSelected

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:19:32 26 4
gpt4 key购买 nike

我使用以下示例设置了一个 simpleonpagechangelistener:

Android SimpleOnPageChangeListener - Determine swipe direction

但是,当我执行代码然后滑动 viewpager 时,我希望调用以下行:

public void onPageSelected(int position) {

然而,它似乎从来没有这样做过——这导致了一个非功能性的 viewPager。

有什么建议吗?

   public class Home extends YouTubeBaseActivity implements VideoClickListener {
...
private int mCurrentTabPosition = NO_CURRENT_POSITION;
private static final int NO_CURRENT_POSITION = -1;
private ViewPager mPager;
...
int imageArray[];
String[] stringArray;

private OnPageChangeListener mPageChangeListener;
ImagePagerAdapter adapter = new ImagePagerAdapter();

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home);

final ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);

viewPager.setAdapter(adapter);
...

setOnPageChangeListener(mPageChangeListener);


mPageChangeListener = new ViewPager.SimpleOnPageChangeListener() {


@Override
public void onPageSelected(int position) {
onTabChanged(mPager.getAdapter(), mCurrentTabPosition, position);
position = mCurrentTabPosition;
int oldPos = viewPager.getCurrentItem();
if (position > oldPos) {

System.out.print(position);
// Moving to the right
String playlist = "TheMozARTGROUP‎";
new GetYouTubeUserVideosTask(responseHandler, playlist)
.execute();

View vg = findViewById(R.layout.home);
vg.invalidate();

} else if (position < oldPos) {
// Moving to the Left
System.out.print(position);
String playlist = "TheMozARTGROUP‎";
new GetYouTubeUserVideosTask(responseHandler, playlist)
.execute();

View vg = findViewById(R.layout.home);
vg.invalidate();

}
viewPager.setOnPageChangeListener(mPageChangeListener);
}

private void onTabChanged(PagerAdapter adapter,
int mCurrentTabPosition, int position) {
// TODO Auto-generated method stub

}
};

}

private void setOnPageChangeListener(
OnPageChangeListener mPageChangeListener2) {
// TODO Auto-generated method stub

}

...



private class ImagePagerAdapter extends PagerAdapter {
public ImagePagerAdapter(Activity act, int[] mImages,
String[] stringArra) {
imageArray = mImages;
activity = act;
stringArray = stringArra;
}


public ImagePagerAdapter() {
super();

}

private int[] mImages = new int[] { R.drawable.selstation_up_btn,
R.drawable.classical_up_btn, R.drawable.country_up_btn,
R.drawable.dance_up_btn, R.drawable.hiphop_up_btn,
R.drawable.island_up_btn, R.drawable.latin_up_btn,
R.drawable.pop_up_btn, R.drawable.samba_up_btn };

private String[] stringArray = new String[] { "vevo",
"TheMozARTGROUP‎", "TimMcGrawVEVO‎", "TiestoVEVO‎",
"EminemVEVO‎" };

@Override
public int getCount() {
return mImages.length;
}

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

@Override
public Object instantiateItem(ViewGroup container, int position) {
Context context = Home.this;
ImageView imageView = new ImageView(context);
imageView.setScaleType(ScaleType.FIT_XY);
imageView.setImageResource(mImages[position]);
((ViewPager) container).addView(imageView, 0);
return imageView;
}

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

protected void onTabChanged(final PagerAdapter adapter,
final int oldPosition, final int newPosition) {
// Calc if swipe was left to right, or right to left
if (oldPosition > newPosition) {
// left to right
} else {
// right to left


}
final ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);

}
}
}

XML:

 <android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="wrap_content"
android:layout_height="fill_parent" />

最佳答案

我使用的是 ViewPagerIndicator,事实证明,当您这样做时,您应该在指示器上而不是在 viewpager 上设置 OnPageChangeListener。 (如documented)

也一样:

    mIndicator.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
doYourThing();
}
});

代替:

    mPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
doYourThing();
}
});

如果您使用 SlidingTabLayout,同样适用

关于java - setOnPageChangeListener 不调用 onPageSelected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20569420/

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