Oreo
Oreo

Reputation: 2594

Get Current Position of ViewPager

In my program, I am showing GridView and when user do tap on any of the Grid item showing ViewPager

Here i want to know, How can i show current position of total position, like we normally see in Image Gallery

For example: I would like to show current position of ViewPager with Total of Grid Items in textView

 3 of 11

This is what i am trying to get:

enter image description here

MainActivity.java: GridView

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Set title for the GridView
        setTitle("GridView");
        // Get the view from grid_view.xml
        setContentView(R.layout.grid_view);

        // Set the images from ImageAdapter.java to GridView
        GridView gridview = (GridView) findViewById(R.id.gridview);
        gridview.setAdapter(new ImageAdapter(this));

        // Listening to GridView item click
        gridview.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {

                // Launch ImageViewPager.java on selecting GridView Item
                Intent i = new Intent(getApplicationContext(), ImageViewPager.class);

                // Show a simple toast message for the item position
                Toast.makeText(MainActivity.this, "" + position, Toast.LENGTH_SHORT).show();

                // Send the click position to ImageViewPager.java using intent
                i.putExtra("id", position);

                // Start ImageViewPager
                startActivity(i);
            }
        });
    }

ImageViewPager.java:

public class ImageViewPager extends Activity {
    // Declare Variable
    int position;
    TextView textView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Set title for the ViewPager
        setTitle("ViewPager");
        // Get the view from view_pager.xml
        setContentView(R.layout.view_pager);

        // Retrieve data from MainActivity on item click event
        Intent p = getIntent();
        position = p.getExtras().getInt("id");          

        textView = (TextView) findViewById(R.id.textView1);             

        ImageAdapter imageAdapter = new ImageAdapter(this);
        List<ImageView> images = new ArrayList<ImageView>();

        // Retrieve all the images
        for (int i = 0; i < imageAdapter.getCount(); i++) {
            ImageView imageView = new ImageView(this);
            imageView.setImageResource(imageAdapter.mThumbIds[i]);
            imageView.setScaleType(ImageView.ScaleType.CENTER);
            images.add(imageView);
        }

        // Set the images into ViewPager
        ImagePagerAdapter pageradapter = new ImagePagerAdapter(images);
        ViewPager viewpager = (ViewPager) findViewById(R.id.pager);
        viewpager.setAdapter(pageradapter);
        // Show images following the position
        viewpager.setCurrentItem(position);
    }
}

Upvotes: 1

Views: 8812

Answers (3)

Sandeep Singh
Sandeep Singh

Reputation: 1127

Use this

String s= (pager.getCurrentItem()+1) +" of "+ images.size()
textView.setText(s);

Upvotes: 1

Ankii Rawat
Ankii Rawat

Reputation: 2080

You shoul set text onPageSelected.

  viewPager.setOnPageChangeListener(new OnPageChangeListener() {

        @Override
        public void onPageSelected(int arg0) {
            // TODO Auto-generated method stub
            System.out.println("Current position=="+num);
            textView.setText((arg0+1)+" of "+ images.size());
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
            // TODO Auto-generated method stub

            System.out.println("onPageScrolled");
        }

        @Override
        public void onPageScrollStateChanged(int num) {
            // TODO Auto-generated method stub


        }
    });

Upvotes: 5

vijay
vijay

Reputation: 1495

Try this:

viewPager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int arg0) {
                // TODO Auto-generated method stub
                System.out.println("onPageSelected");

            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
                // TODO Auto-generated method stub

                System.out.println("onPageScrolled");
            }

            @Override
            public void onPageScrollStateChanged(int num) {
                // TODO Auto-generated method stub
                System.out.println("onPageScrollStateChanged");
                System.out.println("Current position=="+num);


            }
        });

Upvotes: 1

Related Questions