List of usage examples for android.support.v4.view ViewPager setCurrentItem
public void setCurrentItem(int item, boolean smoothScroll)
From source file:com.alex.view.tab.TabLayout.java
public void applyConfigurationWithViewPager(@NonNull final ViewPager viewPager, final boolean alphaTransformEnabled) { viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override//from w w w .j av a2s. co m public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { if (mIndicatorShape != SHAPE_NONE && mIndicatorAnimEnabled) { scrollIndicatorTo(position, positionOffset); } if (alphaTransformEnabled) { scrollTabTo(position, positionOffset); } } @Override public void onPageSelected(int position) { setCurrentTab(position); } @Override public void onPageScrollStateChanged(int state) { if (mIndicatorShape != SHAPE_NONE && mIndicatorAnimEnabled && mIndicatorBounceEnabled) { updateState(); } } }); // ?? if (mListener == null) { mListener = new OnTabSelectedListener() { @Override public void onTabSelect(View view, int position) { viewPager.setCurrentItem(position, false); } @Override public void onTabReselect(View view, int position) { } }; addOnTabSelectedListener(); } }
From source file:com.battlelancer.seriesguide.ui.EpisodeDetailsActivity.java
private void setupViews() { // get episode id final int episodeId = getIntent().getIntExtra(InitBundle.EPISODE_TVDBID, 0); if (episodeId == 0) { // nothing to display finish();// www.ja va2 s . c o m return; } // get show and season id, poster path final Cursor episode = getContentResolver().query( Episodes.buildEpisodeWithShowUri(String.valueOf(episodeId)), new String[] { Seasons.REF_SEASON_ID, Shows.POSTER, Shows.REF_SHOW_ID, Shows.TITLE }, null, null, null); if (episode == null || !episode.moveToFirst()) { // nothing to display if (episode != null) { episode.close(); } finish(); return; } setupActionBar(episode.getString(3)); // set show poster as background Utils.loadPosterBackground(this, (ImageView) findViewById(R.id.background), episode.getString(1)); mShowId = episode.getInt(2); mSeasonId = episode.getInt(0); episode.close(); // get episodes of season Constants.EpisodeSorting sortOrder = DisplaySettings.getEpisodeSortOrder(this); Cursor episodesOfSeason = getContentResolver().query( Episodes.buildEpisodesOfSeasonUri(String.valueOf(mSeasonId)), new String[] { Episodes._ID, Episodes.NUMBER, Episodes.SEASON }, null, null, sortOrder.query()); ArrayList<Episode> episodes = new ArrayList<>(); int startPosition = 0; if (episodesOfSeason != null) { int i = 0; while (episodesOfSeason.moveToNext()) { Episode ep = new Episode(); int curEpisodeId = episodesOfSeason.getInt(0); // look for episode to show initially if (curEpisodeId == episodeId) { startPosition = i; } ep.episodeId = curEpisodeId; ep.episodeNumber = episodesOfSeason.getInt(1); ep.seasonNumber = episodesOfSeason.getInt(2); episodes.add(ep); i++; } episodesOfSeason.close(); } // setup adapter EpisodePagerAdapter adapter = new EpisodePagerAdapter(this, getSupportFragmentManager(), episodes, false); // setup view pager ViewPager pager = (ViewPager) findViewById(R.id.pagerEpisodeDetails); pager.setAdapter(adapter); // setup tabs SlidingTabLayout tabs = (SlidingTabLayout) findViewById(R.id.tabsEpisodeDetails); tabs.setCustomTabView(R.layout.tabstrip_item, R.id.textViewTabStripItem); tabs.setSelectedIndicatorColors( getResources().getColor(Utils.resolveAttributeToResourceId(getTheme(), R.attr.colorAccent))); tabs.setBottomBorderColor(Utils.setColorAlpha(getResources() .getColor(Utils.resolveAttributeToResourceId(getTheme(), R.attr.sgColorTabStripUnderline)), 0x26)); tabs.setViewPager(pager); if (AndroidUtils.isKitKatOrHigher()) { // fix padding with translucent status bar // warning: status bar not always translucent (e.g. Nexus 10) // (using fitsSystemWindows would not work correctly with multiple views) SystemBarTintManager systemBarTintManager = new SystemBarTintManager(this); SystemBarTintManager.SystemBarConfig config = systemBarTintManager.getConfig(); ViewGroup contentContainer = (ViewGroup) findViewById(R.id.contentContainerEpisodeDetails); contentContainer.setPadding(0, config.getPixelInsetTop(false), 0, 0); } // set current item pager.setCurrentItem(startPosition, false); }
From source file:de.baumann.hhsmoodle.HHS_MainScreen.java
private void setupViewPager(ViewPager viewPager) { final String startTab = sharedPref.getString("tabMain", "1"); final int startTabInt = Integer.parseInt(startTab); ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); adapter.addFragment(new FragmentBrowser(), String.valueOf(getString(R.string.title_browser))); adapter.addFragment(new Bookmarks_Fragment(), String.valueOf(getString(R.string.title_bookmarks))); adapter.addFragment(new Todo_Fragment(), String.valueOf(getString(R.string.todo_title))); adapter.addFragment(new Notes_Fragment(), String.valueOf(getString(R.string.title_notes))); adapter.addFragment(new Count_Fragment(), String.valueOf(getString(R.string.count_title))); adapter.addFragment(new Schedule_Fragment(), String.valueOf(getString(R.string.schedule_title))); adapter.addFragment(new Files_Fragment(), String.valueOf(getString(R.string.choose_titleMain))); adapter.addFragment(new Random_Fragment(), String.valueOf(getString(R.string.number_title))); adapter.addFragment(new Courses_Fragment(), String.valueOf(getString(R.string.courseList_title))); adapter.addFragment(new Subjects_Fragment(), String.valueOf(getString(R.string.subjects_title))); adapter.addFragment(new FragmentGrades(), String.valueOf(getString(R.string.action_grades))); viewPager.setAdapter(adapter);// w w w. j a va 2 s .c om viewPager.setCurrentItem(startTabInt, true); }
From source file:im.actor.sdk.view.emoji.keyboard.emoji.EmojiKeyboard.java
@Override protected View createView() { final View emojiPagerView = LayoutInflater.from(activity).inflate(R.layout.emoji_smiles_pager, null); final ViewPager emojiPager = (ViewPager) emojiPagerView.findViewById(R.id.emoji_pager); final PagerSlidingTabStrip emojiPagerIndicator = (PagerSlidingTabStrip) emojiPagerView .findViewById(R.id.emoji_pager_indicator); View backspace = emojiPagerView.findViewById(R.id.backspace); final View backToSmiles = emojiPagerView.findViewById(R.id.back_to_smiles); final View indicatorContainer = emojiPagerView.findViewById(R.id.indicator_container); stickerIndicatorContainer = emojiPagerView.findViewById(R.id.sticker_indicator_container); stickerSwitchContainer = emojiPagerView.findViewById(R.id.sticker_switch_container); emojiPagerIndicator.setTabBackground(R.drawable.clickable_background); emojiPagerIndicator.setIndicatorColorResource(R.color.primary); emojiPagerIndicator.setIndicatorHeight(Screen.dp(2)); emojiPagerIndicator.setDividerColor(0x00000000); emojiPagerIndicator.setUnderlineHeight(0); emojiPagerIndicator.setTabLayoutParams(new LinearLayout.LayoutParams(Screen.dp(48), Screen.dp(48))); backspace.setOnTouchListener(new RepeatListener(500, 100, new OnClickListener() { @Override//from w ww . j av a2 s. co m public void onClick(View v) { onBackspaceClick(v); } })); mEmojisAdapter = new SmilePagerAdapter(this); mEmojisAdapter.setTabs(emojiPagerIndicator); emojiPager.setAdapter(mEmojisAdapter); emojiPagerIndicator.setViewPager(emojiPager); backToSmiles.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { emojiPager.setCurrentItem(3, false); ObjectAnimator oa = ObjectAnimator.ofFloat(indicatorContainer, "translationX", 0, 0); oa.setDuration(0); oa.start(); if (stickerIndicatorContainer.getVisibility() == View.INVISIBLE) { stickerIndicatorContainer.setVisibility(View.VISIBLE); } ObjectAnimator oas = ObjectAnimator.ofFloat(stickerIndicatorContainer, "translationX", Screen.getWidth(), Screen.getWidth()); oas.setDuration(0); oas.start(); emojiPager.setCurrentItem(1, true); } }); final FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) stickerIndicatorContainer.getLayoutParams(); emojiPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { if (position == 4) { ObjectAnimator oa = ObjectAnimator.ofFloat(indicatorContainer, "translationX", indicatorContainer.getX(), -positionOffsetPixels); oa.setDuration(0); oa.start(); if (stickerIndicatorContainer.getVisibility() == View.INVISIBLE) { stickerIndicatorContainer.setVisibility(View.VISIBLE); } ObjectAnimator oas = ObjectAnimator.ofFloat(stickerIndicatorContainer, "translationX", stickerIndicatorContainer.getX() + Screen.getWidth(), -positionOffsetPixels + Screen.getWidth()); oas.setDuration(0); oas.start(); } } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } }); //emojiPagerIndicator.setLayoutParams(new RelativeLayout.LayoutParams(Screen.dp(58 * mEmojisAdapter.getCount()), Screen.dp(48))); // emojiPager.postDelayed(new Runnable() { // @Override // public void run() { // emojiPager.setAlpha(0f); // emojiPagerIndicator.setAlpha(0f); // animateView(emojiPager); // animateView(emojiPagerIndicator); // emojiPager.setAdapter(mEmojisAdapter); // emojiPagerIndicator.setViewPager(emojiPager); // } // }, BINDING_DELAY); if (SmilesPack.getRecent().size() == 0) { emojiPager.setCurrentItem(1); } return emojiPagerView; }
From source file:com.momock.outlet.tab.PagerTabOutlet.java
public void attach(TabHolder target) { Logger.check(target != null, "Parameter target cannot be null!"); Logger.check(target.getTabContent() instanceof ViewPager, "The PagerTabOutlet must contains a ViewPager content!"); this.target = target; final TabHost tabHost = target.getTabHost(); final ViewPager tabContent = (ViewPager) target.getTabContent(); plugs = getPlugs();//from ww w .j av a2 s . c o m ViewPager pager = (ViewPager) target.getTabContent(); for (int i = 0; i < plugs.getItemCount(); i++) { ITabPlug plug = (ITabPlug) plugs.getItem(i); Logger.check(plug.getContent() instanceof ViewHolder, "The plug of PagerTabOutlet must include a ViewHolder!"); ((ViewHolder) plug.getContent()).reset(); } pager.setAdapter(new PagerAdapter() { @Override public int getCount() { return plugs.getItemCount(); } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public Object instantiateItem(ViewGroup container, int position) { ITabPlug plug = (ITabPlug) plugs.getItem(position); View view = ((ViewHolder) plug.getContent()).getView(); container.addView(view); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } }); tabContent.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageSelected(int position) { TabWidget widget = tabHost.getTabWidget(); int oldFocusability = widget.getDescendantFocusability(); widget.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS); tabHost.setCurrentTab(position); widget.setDescendantFocusability(oldFocusability); } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageScrollStateChanged(int state) { } }); tabHost.setup(); tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() { @Override public void onTabChanged(String tabId) { int index = tabHost.getCurrentTab(); ITabPlug plug = (ITabPlug) plugs.getItem(index); setActivePlug(plug); tabContent.setCurrentItem(index, true); } }); for (int i = 0; i < plugs.getItemCount(); i++) { final ITabPlug plug = (ITabPlug) plugs.getItem(i); Logger.check(plug.getContent() instanceof ViewHolder, "Plug in PagerTabOutlet must contains a ViewHolder content!"); TabHost.TabSpec spec = tabHost.newTabSpec("" + i); target.setTabIndicator(spec, plug); spec.setContent(new TabContentFactory() { @Override public View createTabContent(String tag) { View v = new View(tabHost.getContext()); v.setMinimumWidth(0); v.setMinimumHeight(0); return v; } }); tabHost.addTab(spec); if (getActivePlug() == plug) tabHost.setCurrentTab(i); } }
From source file:emojicon.EmojiconsFragment.java
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.emojicons, container, false); final ViewPager emojisPager = (ViewPager) view.findViewById(R.id.emojis_pager); emojisPager.setOnPageChangeListener(this); // we handle recents EmojiconRecents recents = this; mEmojisAdapter = new EmojisPagerAdapter(getFragmentManager(), Arrays.asList( // EmojiconRecentsGridFragment.newInstance(mUseSystemDefault), EmojiconGridFragment.newInstance(People.DATA, recents, mUseSystemDefault) // EmojiconGridFragment.newInstance(Nature.DATA, recents, mUseSystemDefault), // EmojiconGridFragment.newInstance(Objects.DATA, recents, mUseSystemDefault), // EmojiconGridFragment.newInstance(Places.DATA, recents, mUseSystemDefault), // EmojiconGridFragment.newInstance(Symbols.DATA, recents, mUseSystemDefault) ));/*w w w.j a v a 2 s .co m*/ emojisPager.setAdapter(mEmojisAdapter); // mEmojiTabs = new View[6]; // mEmojiTabs[0] = view.findViewById(R.id.emojis_tab_0_recents); // mEmojiTabs[1] = view.findViewById(R.id.emojis_tab_1_people); // mEmojiTabs[2] = view.findViewById(R.id.emojis_tab_2_nature); // mEmojiTabs[3] = view.findViewById(R.id.emojis_tab_3_objects); // mEmojiTabs[4] = view.findViewById(R.id.emojis_tab_4_cars); // mEmojiTabs[5] = view.findViewById(R.id.emojis_tab_5_punctuation); // for (int i = 0; i < mEmojiTabs.length; i++) { // final int position = i; // mEmojiTabs[i].setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View v) { // emojisPager.setCurrentItem(position); // } // }); // } view.findViewById(R.id.emojis_backspace) .setOnTouchListener(new RepeatListener(1000, 50, new View.OnClickListener() { @Override public void onClick(View v) { if (mOnEmojiconBackspaceClickedListener != null) { mOnEmojiconBackspaceClickedListener.onEmojiconBackspaceClicked(v); } } })); // get last selected page mRecentsManager = EmojiconRecentsManager.getInstance(view.getContext()); int page = mRecentsManager.getRecentPage(); // last page was recents, check if there are recents to use // if none was found, go to page 1 if (page == 0 && mRecentsManager.size() == 0) { page = 1; } if (page == 0) { onPageSelected(page); } else { emojisPager.setCurrentItem(page, false); } return view; }
From source file:com.momock.outlet.tab.FragmentPagerTabOutlet.java
public void attach(final FragmentTabHolder tabHolder) { Logger.check(tabHolder != null, "Parameter tabHolder cannot be null!"); this.target = tabHolder; final TabHost tabHost = target.getTabHost(); plugs = getPlugs();/* w w w. j a v a2 s . c o m*/ Logger.check(target.getTabContent() instanceof ViewPager, "The tab content container must be a ViewPager!"); final ViewPager tabContent = (ViewPager) target.getTabContent(); tabContent.setOffscreenPageLimit(plugs.getItemCount()); tabContent.setAdapter(new FragmentPagerAdapter(target.getFragmentManager()) { @Override public Fragment getItem(final int position) { final ITabPlug plug = (ITabPlug) plugs.getItem(position); Fragment f = ((FragmentHolder) plug.getContent()).getFragment(); if (f instanceof CaseFragment) { CaseFragment cf = (CaseFragment) f; cf.setActiveCaseIndicator(new IActiveCaseIndicator() { @Override public boolean isActiveCase() { return getActivePlug() == plug; } }); } return f; } @Override public int getCount() { return plugs.getItemCount(); } void doFinishUpdate(ViewGroup container) { super.finishUpdate(container); } @Override public void finishUpdate(final ViewGroup container) { new Handler().post(new Runnable() { @Override public void run() { doFinishUpdate(container); } }); } @Override public void setPrimaryItem(ViewGroup container, int position, final Object object) { super.setPrimaryItem(container, position, object); new Handler().post(new Runnable() { @Override public void run() { if (object instanceof CaseFragment) { CaseFragment cf = (CaseFragment) object; if (cf.getCase() != null && cf.getCase().getParent() != null) cf.getCase().getParent().setActiveCase(cf.getCase()); } } }); } }); tabHost.setup(); for (int i = 0; i < plugs.getItemCount(); i++) { final ITabPlug plug = (ITabPlug) plugs.getItem(i); Logger.check(plug.getContent() instanceof FragmentHolder, "Plug in PagerTabOutlet must contains a FragmentHolder content!"); TabHost.TabSpec spec = tabHost.newTabSpec("" + i); target.setTabIndicator(spec, plug); spec.setContent(new TabContentFactory() { @Override public View createTabContent(String tag) { View v = new View(tabHost.getContext()); v.setMinimumWidth(0); v.setMinimumHeight(0); return v; } }); tabHost.addTab(spec); if (getActivePlug() == plug) { tabHost.setCurrentTab(i); tabContent.setCurrentItem(i, true); } } tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() { @Override public void onTabChanged(String tabId) { int index = tabHost.getCurrentTab(); ITabPlug plug = (ITabPlug) plugs.getItem(index); setActivePlug(plug); tabContent.setCurrentItem(index, true); } }); tabContent.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageSelected(int position) { TabWidget widget = tabHost.getTabWidget(); int oldFocusability = widget.getDescendantFocusability(); widget.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS); tabHost.setCurrentTab(position); widget.setDescendantFocusability(oldFocusability); } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageScrollStateChanged(int state) { } }); }
From source file:tv.piratemedia.lightcontroler.controller.java
private void setupApp() { mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar); setSupportActionBar(mActionBarToolbar); prefs = PreferenceManager.getDefaultSharedPreferences(this); if (!prefs.getBoolean("rgbw_enabled", false) && !prefs.getBoolean("white_enabled", false)) { askControlType();//from w w w. jav a2s. c o m } else { final ViewPager pager = (ViewPager) findViewById(R.id.pager); pager.setAdapter(new ControllerPager(getSupportFragmentManager(), this)); tabs = (PagerSlidingTabStrip) findViewById(R.id.pager_title_strip); tabs.setViewPager(pager); if (!prefs.getBoolean("navigation_tabs", false)) { drawer.setProfile(new DrawerProfile().setAvatar(getResources().getDrawable(R.drawable.icon)) .setBackground(getResources().getDrawable(R.drawable.drawer_profile_background)) .setName("Light Controller")); mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar); mActionBarToolbar.setNavigationIcon(R.drawable.ic_menu_white_24dp); pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { mActionBarToolbar.setTitle(pager.getAdapter().getPageTitle(position)); } @Override public void onPageScrollStateChanged(int state) { } }); this.setTitle(pager.getAdapter().getPageTitle(0)); mActionBarToolbar.setTitle(pager.getAdapter().getPageTitle(0)); tabs.setVisibility(View.GONE); for (int i = 0; i < pager.getAdapter().getCount(); i++) { if (i == 5) { drawer.addDivider(); } drawer.addItem(new DrawerItem().setTextMode(DrawerItem.SINGLE_LINE) .setTextPrimary(pager.getAdapter().getPageTitle(i).toString()) .setOnItemClickListener(new DrawerItem.OnItemClickListener() { @Override public void onClick(DrawerItem drawerItem, int i, int i2) { int item = i2; if (item > 4) { item--; } pager.setCurrentItem(item, true); drawer.closeDrawer(); } })); } drawer.addDivider(); drawer.addItem(new DrawerItem().setTextMode(DrawerItem.SINGLE_LINE) .setTextPrimary(getResources().getString(R.string.action_settings)) .setOnItemClickListener(new DrawerItem.OnItemClickListener() { @Override public void onClick(DrawerItem drawerItem, int i, int i2) { Intent intent = new Intent(getApplicationContext(), controlPreferences.class); startActivity(intent); finish(); drawer.closeDrawer(); } })); final PackageManager pm = getPackageManager(); Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory("tv.piratemedia.lightcontroller.plugin"); List<ResolveInfo> resolveInfos = pm.queryIntentActivities(mainIntent, 0); if (resolveInfos.size() > 0) { drawer.addDivider(); for (final ResolveInfo info : resolveInfos) { drawer.addItem(new DrawerItem().setTextMode(DrawerItem.SINGLE_LINE) .setTextPrimary(info.loadLabel(pm).toString()).setImage(info.loadIcon(pm)) .setOnItemClickListener(new DrawerItem.OnItemClickListener() { @Override public void onClick(DrawerItem drawerItem, int i, int i2) { Intent intent = new Intent(Intent.ACTION_MAIN); Log.d("package", "pkg:" + info.resolvePackageName); intent.setComponent(new ComponentName(info.activityInfo.packageName, info.activityInfo.name)); startActivity(intent); drawer.closeDrawer(); } })); } } } else { drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); } } }
From source file:com.momock.binder.container.ViewPagerBinder.java
public void onBind(final ViewPager view, final IDataList<?> dataSource) { if (view != null) { if (refIndicator != null && refIndicator.get() != null) { refIndicator.get().setCount(dataSource.getItemCount()); }//from www . j av a 2 s. c o m view.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageSelected(int position) { position = adapter instanceof IRoundAdapter ? ((IRoundAdapter) adapter).getRealPosition(position) : position; Object item = dataSource.getItem(position); ItemEventArgs args = new ItemEventArgs(view, position, item); itemSelectedEvent.fireEvent(view, args); if (refIndicator != null && refIndicator.get() != null) { refIndicator.get().setCurrentIndex(position); } } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageScrollStateChanged(int state) { viewPagerState = state; } }); view.setOnTouchListener(new View.OnTouchListener() { GestureDetector detector = null; @Override public boolean onTouch(View v, MotionEvent event) { view.getParent().requestDisallowInterceptTouchEvent(true); if (detector == null) { detector = new GestureDetector(v.getContext(), new GestureDetector.SimpleOnGestureListener() { @Override public boolean onSingleTapConfirmed(MotionEvent e) { Object item = dataSource.getItem(adapter instanceof IRoundAdapter ? ((IRoundAdapter) adapter).getRealPosition(view.getCurrentItem()) : view.getCurrentItem()); ItemEventArgs args = new ItemEventArgs(view, view.getCurrentItem(), item); itemClickedEvent.fireEvent(view, args); return true; } }); } return detector.onTouchEvent(event); } }); adapter = new PagerAdapter() { BlockingQueue<View> savedViews = new LinkedBlockingQueue<View>(); @Override public int getCount() { return dataSource.getItemCount(); } @Override public boolean isViewFromObject(View view, Object object) { return view == ((View) object); } @Override public Object instantiateItem(ViewGroup container, int position) { View convertView = null; if (savedViews.size() > 0) { convertView = savedViews.poll(); } Object item = dataSource.getItem(position); if (convertView != null) convertView.setTag(null); convertView = itemBinder.onCreateItemView(convertView, item, ViewPagerBinder.this); convertView.setTag(item); container.addView(convertView, 0); return convertView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { savedViews.add((View) object); container.removeView((View) object); } long lastDataSetChangedTick = 0; @Override public void notifyDataSetChanged() { lastDataSetChangedTick = System.nanoTime(); getDataChangedEvent().fireEvent(this, new EventArgs()); if (refIndicator != null && refIndicator.get() != null) { refIndicator.get().setCount(dataSource.getItemCount()); } super.notifyDataSetChanged(); Logger.debug("ViewPagerBinder.PagerAdapter.notifyDataSetChanged"); } long updateTick = 0; @Override public void startUpdate(ViewGroup container) { updateTick = System.nanoTime(); super.startUpdate(container); } @Override public void setPrimaryItem(ViewGroup container, int position, Object object) { super.setPrimaryItem(container, position, object); } @Override public void finishUpdate(ViewGroup container) { super.finishUpdate(container); if (lastDataSetChangedTick < updateTick) lastDataSetChangedTick = 0; } @Override public int getItemPosition(Object object) { return lastDataSetChangedTick == 0 ? PagerAdapter.POSITION_UNCHANGED : PagerAdapter.POSITION_NONE; } }; if (round) adapter = new RoundPagerAdapter(adapter); view.setAdapter(adapter); dataSource.addDataChangedHandler(new IEventHandler<DataChangedEventArgs>() { @Override public void process(Object sender, DataChangedEventArgs args) { adapter.notifyDataSetChanged(); } }); if (round) view.setCurrentItem(Math.max(100, dataSource.getItemCount() * 100), false); } }