Search code examples
androidandroid-viewpager

ViewPager OnItemClickListener


I'm new to Viewpager, and after reading http://developer.android.com/reference/android/support/v4/view/ViewPager.html from google, I can't seem to find anything related on viewPager.setOnItemClickListener(new OnItemClickListener() { Do we have other options to act as Item Clicked?

Testing out

viewPager.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                Intent i = new Intent(MainActivity.this, SingleItemView.class);
                i.putExtra("flag", flag);
                i.putExtra("position", position);
                startActivity(i);
            }

        });

Error : The method setOnItemClickListener(new AdapterView.OnItemClickListener(){}) is undefined for the type ViewPager


Solution

  • There is no OnItemClick callback method for ViewPager. If you want click events on each page then you'll have to build your listener into the page content within your Adapter.

    something like this:

    @Override
    public Object instantiateItem(View collection, final int pos) { //have to make final so we can see it inside of onClick()
        LayoutInflater inflater = (LayoutInflater) collection.getContext()
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    
    
        View page = inflater.inflate(R.layout.YOUR_PAGE, null);
    
        page.setOnClickListener(new OnClickListener(){
            public void onClick(View v){
                //this will log the page number that was click
                Log.i("TAG", "This page was clicked: " + pos);
            }
        });
    
    
        ((ViewPager) collection).addView(page, 0);
        return page;
    }
    

    exactly what you need will depend a bit on what else you are doing inside of instantiateItem() which you haven't posted so I can't give you a more specific answer.