0

I have a youtube Playlist:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.home);
        final ActionBar actionBar = getActionBar();
        ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
        viewPager.setAdapter(adapter);
        actionBar.setCustomView(R.layout.actionbar_custom_view_home);
        actionBar.setDisplayShowTitleEnabled(false);
        actionBar.setDisplayShowCustomEnabled(true);
        drawerListViewItems = getResources().getStringArray(R.array.items);
        drawerListView = (ListView) findViewById(R.id.left_drawer);
        drawerListView.setAdapter(new ArrayAdapter<String>(this,
                R.layout.drawer_listview_item, drawerListViewItems));

        drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        actionBarDrawerToggle = new ActionBarDrawerToggle(this, /* host Activity */
                drawerLayout, /* DrawerLayout object */
                R.drawable.ic_drawer, /* nav drawer icon to replace 'Up' caret */
                R.string.drawer_open, /* "open drawer" description */
                R.string.drawer_close /* "close drawer" description */
                );
        drawerLayout.setDrawerListener(actionBarDrawerToggle);

        getActionBar().setDisplayHomeAsUpEnabled(true);

        drawerLayout.setDrawerShadow(R.drawable.drawer_shadow,
                GravityCompat.START);
        listView = (VideosListView) findViewById(R.id.videosListView);
        listView.setOnVideoClickListener(this);
        new GetYouTubeUserVideosTask(responseHandler, PLAYLIST).execute();

    }

...

and I have a ViewPager/PagerAdapter:

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

        public ImagePagerAdapter() {
            super();
            // setOnPageChangeListener(mPageChangeListener);
        }

        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);
        }

        private final ViewPager.SimpleOnPageChangeListener mPageChangeListener = new ViewPager.SimpleOnPageChangeListener() {

            @Override
            public void onPageSelected(final int position) {
                onTabChanged(mPager.getAdapter(), mCurrentTabPosition, position);
                mCurrentTabPosition = position;

            }
        };

        public View getView(int position, View convertView, ViewGroup parent) {
            View vi=convertView;
            if (convertView == null) {
                convertView = LayoutInflater.from(context)
                  .inflate(R.layout.home, parent, false);
            }

            ImageView imageView = new ImageView(context);
            ImageView imageView = (ImageView)vi.findViewById(R.drawable.selstation_up_btn);
            imageView.setImageResource(imageView.getImage());

            return convertView;
        }

        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

                View vg = findViewById(R.layout.home);
                vg.invalidate();
            }
            final ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);

            viewPager.setOnPageChangeListener(new OnPageChangeListener() {

                int oldPos = viewPager.getCurrentItem();

                @Override
                public void onPageScrolled(int position, float arg1, int arg2) {

                    if (position > oldPos) {
                        // Moving to the right

                    } else if (position < oldPos) {
                        // Moving to the Left

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

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

                }

                @Override
                public void onPageSelected(int arg0) {
                    // TODO Auto-generated method stub

                }

            });

        }
    }
    }

Screenshot:

enter image description here

Issue:

How can I connect the two - so when I swipe the ViewPager/PagerAdapter: it changes the value of: String PLAYLIST

I need to change it's value depending on the ViewPager/PagerAdapter selection.

Example:

if R.drawable.classical_up_btn {

String PLAYLIST = "TheMozARTGROUP‎";

}

or

 if R.drawable.country_up_btn {

   String PLAYLIST = "TimMcGrawVEVO‎";
}
user3009687
  • 369
  • 2
  • 7
  • 17

1 Answers1

0

If I'm understanding your question correctly, you can change a class level variable, playlist, in your onPageChangeListener. int position in onPageScrolled is the index of the first displayed item.

As a side note, all caps should be reserved for constants. Any variable that can be changed in code should start with a lower case letter.

GLee
  • 5,003
  • 5
  • 35
  • 39
  • Thanks! So if I understand you correctly I'll need to use something such as: @Override public void onPageScrolled(int position, float arg1, int arg2) { if (position > oldPos) { // Moving to the right } else if (position < oldPos) { // Moving to the Left String playlist = "TheMozARTGROUP‎"; new GetYouTubeUserVideosTask(responseHandler, playlist).execute(); } – user3009687 Dec 11 '13 at 20:46
  • Hmmmmm.... I set a breakpoint at onPageScrolled and when I swiper the viewpager/pager adapter it is never reached (do you see anything which might be causing this?) – user3009687 Dec 11 '13 at 20:51
  • I think you might not be setting the onPageListener in the right place. Right now it's set in onTabChanged, inside of a private class, and I'm not sure if onTabChanged is getting called. Try moving that code to your onCreate method to make sure that the listener is actually getting set. – GLee Dec 11 '13 at 21:25