Используйте ViewPager/PagerAdapter для изменения строки

У меня есть запрос JSON, который получает ответ от YouTube:

@Override
   protected Void doInBackground(Void... arg0) {
       try {

         HttpClient client = new DefaultHttpClient();

         HttpUriRequest request = new HttpGet("https://gdata.youtube.com/feeds/api/videos?author="+PLAYLIST+"&v=2&alt=jsonc");

Я хотел бы использовать перелистываемое изображение нижнего колонтитула (pagerAdapter) для изменения значение строки PLAYLIST. Моей главной задачей является выяснить, как использовать показанный PagerAdapter. ниже, чтобы установить следующее:

String PLAYLIST = "vevo";
String PLAYLIST = "TheMozARTGROUP‎";
String PLAYLIST = "TimMcGrawVEVO‎";
String PLAYLIST = "TiestoVEVO‎";
String PLAYLIST = "EminemVEVO‎";

затем сразу после того, как PagerAdapter задает значение PLAYLIST, создайте список воспроизведения с использованием нового значения PLAYLIST:

new GetYouTubeUserVideosTask(responseHandler, PLAYLIST).execute();

Я создал новый массив строк, содержащий значения, которые я хотел бы использовать. Мой вопрос теперь, когда все понятно: как я могу изменить исходный код ниже, чтобы установить значение PLAYLIST, используя одно из значений массива, и выполнить новый список воспроизведения? (В настоящее время мой исходный код компилируется, но когда я прокручиваю PagerAdapter - ничего не происходит )

new GetYouTubeUserVideosTask(responseHandler, PLAYLIST).execute();

В настоящее время не работает адаптер пейджера:

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

        // this is your constructor
        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 };

        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.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;

            }
        };

        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

                }

            });

        }
    }
}

Скриншот:

введите здесь описание изображения

Дополнительная информация:

  1. http://developer.android.com/training/animation/screen-slide.html

  2. http://developer.android.com/reference/android/support/v4/view/PagerAdapter.html


person user3063132    schedule 09.12.2013    source источник


Ответы (1)


Попробуйте изучить этот ответ, а затем изменить свой код, чтобы следовать примеру обновления ' updateBananas listArray перед вызовом notifyDataSetChanged(). Вызов уведомления — это сигнал к обновлению представления в используемом вами адаптере.

В вашем коде getYouTube... необходимо обновить объект массива, на который ссылается адаптер.

вы сможете получить его, внедрив те же соединения из примера в свой код.

person Robert Rowntree    schedule 09.12.2013
comment
Спасибо! Я изучил его и попытался реализовать... но у меня возникла небольшая проблема - не могли бы вы заглянуть? stackoverflow .com/questions/20500893/ - person user3063132; 10.12.2013