Jame
Jame

Reputation: 3854

Is it possible to know which image display in ViewPager?

I have two images. I used ViewPager to display them individually. I want to know which ones is displaying in the screen. Could you help me to solve it? For example, when I scroll the screen, the first image will display and Toast a message such as "This is first image", do same thing for second image. Thanks in advance. This is my code

public class ViewPagerExample extends FragmentActivity{

    private MyAdapter mAdapter;
    private ViewPager mPager;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    mAdapter = new MyAdapter(getSupportFragmentManager());

    mPager = (ViewPager) findViewById(R.id.pager);
    mPager.setAdapter(mAdapter);
    }

    public static class MyAdapter extends FragmentPagerAdapter {
    public MyAdapter(FragmentManager fm) {
    super(fm);
    }

    @Override
    public int getCount() {
    return 2;
    }

    @Override
    public Fragment getItem(int position) {
    switch (position) {
    case 0:
    {
    return new ImageFragment(R.drawable.image1);
    }
    case 1:
    {
    return new ImageFragment(R.drawable.image2);
    }

    default:
    return null;
    }
    }
    }
    }

and the ImageFragment class

public class ImageFragment extends Fragment {
    private final int imageResourceId;

    public ImageFragment(int imageResourceId) {
    this.imageResourceId = imageResourceId;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.e("Test", "hello");
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.image_layout, container, false);
    ImageView imageView = (ImageView) view.findViewById(R.id.imageView1);
    imageView.setImageResource(imageResourceId);
    return view;
    }
    }

Upvotes: 1

Views: 53

Answers (3)

Jackson Chengalai
Jackson Chengalai

Reputation: 3937

There is a method yourViewpagerObject.getCurrentItem() which returns the position of currently Viewed page of view pager

Upvotes: 1

Ravindra Kushwaha
Ravindra Kushwaha

Reputation: 8042

You can use these lines of code to detect the image on swipe

    ViewPager.SimpleOnPageChangeListener pageChangeListener = new ViewPager.SimpleOnPageChangeListener(){
        @Override
        public void onPageSelected(int position) {
            super.onPageSelected(position);


            System.out.println("Positoin is the=="+position);

            if(position==0)
            {
                ///on the zero position you can get the image
            }
            else
            {
                ///on the first position you can get the image                  
            }

        }
    };

Upvotes: 1

Mustanser Iqbal
Mustanser Iqbal

Reputation: 5097

try something like this

mPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int pager_position) {

                // show toast here for images
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

Upvotes: 1

Related Questions