ViewPager的onPageSelected未调用

问题描述 投票:0回答:1

我有ViewPager,但从未调用过onPageSelected函数。我研究了所有stackoverflow问题,并尝试了所有答案,但是没有用。

我的viewPager具有gridview。我想听从viewPager的左右滑动。

布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerInParent="true"
        android:layout_centerVertical="true"
        android:layout_gravity="center"
        android:layout_margin="10dp"
        android:gravity="center"
        android:textColor="@color/bg_yellow"
        android:textSize="20sp" />

    <androidx.viewpager.widget.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/textView"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

</RelativeLayout>

代码:

    this.viewPager = findViewById(R.id.viewPager);
    currentPosition = viewPager.getCurrentItem();
    viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
        @Override
        public void onPageSelected(int position) {
            if (currentPosition < position) {
                pressNext();
            } else if (currentPosition > position) {
                pressBack();
            }
            currentPosition = position;
        }
    });
    MyViewPagerAdapter myViewPagerAdapter = new MyViewPagerAdapter(mContext);
    viewPager.setAdapter(myViewPagerAdapter);

ViewPagerAdapter:

public class MyViewPagerAdapter extends PagerAdapter {

    private Context context;
    private MyGridViewAdapter myGridViewAdapter;

    public MyViewPagerAdapter(Context context) {
        this.context = context;
        myGridViewAdapter = new MyViewPagerAdapter(context);
    }

    public int getCount() {
        return 10;
    }

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


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

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        View view = LayoutInflater.from(context).inflate(R.layout.viewpager_item, null);
        GridView gridView = view.findViewById(R.id.grid);
        gridView.setAdapter(myGridViewAdapter);
        container.addView(view);
        return view;
    }
android android-viewpager listener swipe
1个回答
0
投票

尝试

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

而不是:

 this.viewPager = findViewById(R.id.viewPager);
© www.soinside.com 2019 - 2024. All rights reserved.