public void scrollOnce() { try { PagerAdapter adapter = getAdapter(); int currentItem = getCurrentItem(); int totalCount; if (adapter == null || (totalCount = adapter.getCount()) <= 1) { return; } int nextItem = (direction == LEFT) ? --currentItem : ++currentItem; if (nextItem < 0) { if (isCycle) { setCurrentItem(totalCount - 1, isBorderAnimation); } } else if (nextItem == totalCount) { if (isCycle) { setCurrentItem(0, isBorderAnimation); } } else { setCurrentItem(nextItem, isBorderAnimation); } } catch (Exception e) { e.printStackTrace(); } }
private void populateTabStrip() { final PagerAdapter adapter = mViewPager.getAdapter(); final View.OnClickListener tabClickListener = new TabClickListener(); for (int i = 0; i < adapter.getCount(); i++) { View tabView = null; TextView tabTitleView = null; if (mTabViewLayoutId != 0) { // If there is a custom tab view layout id set, try and inflate it tabView = LayoutInflater.from(getContext()).inflate(mTabViewLayoutId, mTabStrip, false); tabTitleView = (TextView) tabView.findViewById(mTabViewTextViewId); } if (tabView == null) { tabView = createDefaultTabView(getContext()); } if (tabTitleView == null && TextView.class.isInstance(tabView)) { tabTitleView = (TextView) tabView; } if (mDistributeEvenly) { LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) tabView.getLayoutParams(); lp.width = 0; lp.weight = 1; } tabTitleView.setText(adapter.getPageTitle(i)); tabView.setOnClickListener(tabClickListener); String desc = mContentDescriptions.get(i, null); if (desc != null) { tabView.setContentDescription(desc); } mTabStrip.addView(tabView); if (i == mViewPager.getCurrentItem()) { tabView.setSelected(true); } } }
@Override public void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); Map<String, String> map = mLocalMusicAdapter.getItem(position); // 取得铃声名 String ringName = map.get(WeacConstants.RING_NAME); // 取得播放地址 String ringUrl = map.get(WeacConstants.RING_URL); // 更新当前铃声选中的位置 mLocalMusicAdapter.updateSelection(ringName); // 更新适配器刷新铃声列表显示 mLocalMusicAdapter.notifyDataSetChanged(); // 设置最后一次选中的铃声选择界面位置为本地音乐界面 RingSelectItem.getInstance().setRingPager(1); // 播放音频文件 AudioPlayer.getInstance(getActivity()).play(ringUrl, false, false); ViewPager pager = (ViewPager) getActivity().findViewById(R.id.fragment_ring_select_sort); PagerAdapter f = pager.getAdapter(); SystemRingFragment systemRingFragment = (SystemRingFragment) f.instantiateItem(pager, 0); RecorderFragment recorderFragment = (RecorderFragment) f.instantiateItem(pager, 2); // 取消系统铃声选中标记 if (systemRingFragment.mSystemRingAdapter != null) { systemRingFragment.mSystemRingAdapter.updateSelection(""); systemRingFragment.mSystemRingAdapter.notifyDataSetChanged(); } // 取消录音选中标记 if (recorderFragment.mRecorderAdapter != null) { recorderFragment.mRecorderAdapter.updateSelection(""); recorderFragment.mRecorderAdapter.notifyDataSetChanged(); } }
@Override public void onChanged() { PagerAdapter adapter = mPager.getAdapter(); int count = 0; if (adapter instanceof InfinitePagerAdapter) { count = ((InfinitePagerAdapter) adapter).getRealCount(); } else { count = adapter.getCount(); } if (count > mItemCount) { for (int i = 0; i < count - mItemCount; i++) { ImageView indicator = new ImageView(mContext); indicator.setImageDrawable(mUnselectedDrawable); indicator.setPadding( (int) mUnSelectedPadding_Left, (int) mUnSelectedPadding_Top, (int) mUnSelectedPadding_Right, (int) mUnSelectedPadding_Bottom); addView(indicator); mIndicators.add(indicator); } } else if (count < mItemCount) { for (int i = 0; i < mItemCount - count; i++) { removeView(mIndicators.get(0)); mIndicators.remove(0); } } mItemCount = count; mPager.setCurrentItem(mItemCount * 20 + mPager.getCurrentItem()); }
private void populateTabStrip() { final PagerAdapter adapter = viewPager.getAdapter(); for (int i = 0; i < adapter.getCount(); i++) { final View tabView = (tabProvider == null) ? createDefaultTabView(adapter.getPageTitle(i)) : tabProvider.createTabView(tabStrip, i, adapter); if (tabView == null) { throw new IllegalStateException("tabView is null."); } if (distributeEvenly) { LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) tabView.getLayoutParams(); lp.width = 0; lp.weight = 1; } if (internalTabClickListener != null) { tabView.setOnClickListener(internalTabClickListener); } tabStrip.addView(tabView); if (i == viewPager.getCurrentItem()) { tabView.setSelected(true); } } }
public void notifyDataSetChanged() { mTabLayout.removeAllViews(); PagerAdapter adapter = mViewPager.getAdapter(); IconPagerAdapter iconAdapter = null; if (adapter instanceof IconPagerAdapter) { iconAdapter = (IconPagerAdapter) adapter; } final int count = adapter.getCount(); for (int i = 0; i < count; i++) { CharSequence title = adapter.getPageTitle(i); if (title == null) { title = EMPTY_TITLE; } int iconResId = 0; if (iconAdapter != null) { iconResId = iconAdapter.getIconResId(i); } addTab(i, title, iconResId); } if (mSelectedTabIndex > count) { mSelectedTabIndex = count - 1; } setCurrentItem(mSelectedTabIndex); requestLayout(); }
public void updatePageNumView() { Log.i("StoreMainActivity - updatePageNumView", "Start"); TextView tvPage = (TextView) findViewById(R.id.tvStoreDetailPage); if (this.listProduct.size() > 0) { String pageDisplay = mPager.getCurrentItem() + 1 + "/" + mPagerAdapter.getCount(); tvPage.setText(pageDisplay); } ImageView btnPagePrevious = (ImageView) findViewById(R.id.btnStoreDetailPagePrevious); ImageView btnPageNext = (ImageView) findViewById(R.id.btnStoreDetailPageNext); if (mPagerAdapter.getCount() > 1) { if (mPager.getCurrentItem() == 0) { btnPagePrevious.setImageAlpha(70); btnPageNext.setImageAlpha(255); } else if (mPager.getCurrentItem() == (mPagerAdapter.getCount() - 1)) { btnPageNext.setImageAlpha(70); btnPagePrevious.setImageAlpha(255); } else { btnPagePrevious.setImageAlpha(255); } } else { btnPageNext.setImageAlpha(70); btnPagePrevious.setImageAlpha(70); } StoreMainActivity.productTransactionDetailInfo = new TransactionDetailInfo(); }
private void populateTabStrip() { final PagerAdapter adapter = mViewPager.getAdapter(); final View.OnClickListener tabClickListener = new TabClickListener(); for (int i = 0; i < adapter.getCount(); i++) { View tabView = null; TextView tabTitleView = null; if (mTabViewLayoutId != 0) { // If there is a custom tab view layout id set, try and inflate it tabView = LayoutInflater.from(getContext()).inflate(mTabViewLayoutId, mTabStrip, false); tabTitleView = (TextView) tabView.findViewById(mTabViewTextViewId); } if (tabView == null) { tabView = createDefaultTabView(getContext()); } if (tabTitleView == null && TextView.class.isInstance(tabView)) { tabTitleView = (TextView) tabView; } tabTitleView.setText(adapter.getPageTitle(i)); tabView.setOnClickListener(tabClickListener); mTabStrip.addView(tabView); } }
@Override public Object instantiateItem(ViewGroup container, int position) { if (position == 0) { return wrappedAdapter.instantiateItem(container, wrappedAdapter.getCount() - 1); } else if (position == wrappedAdapter.getCount() + 1) { return wrappedAdapter.instantiateItem(container, 0); } else { return wrappedAdapter.instantiateItem(container, position - 1); } }
@Override public int getCount() { if (wrappedAdapter == null) { return 0; } else if (wrappedAdapter.getCount() > 1) { return wrappedAdapter.getCount() + 2; } else { return wrappedAdapter.getCount(); } }
/** * clear self means unregister the dataset observer and remove all the child views(indicators). */ public void destroySelf() { if (mPager == null || mPager.getAdapter() == null) { return; } InfinitePagerAdapter wrapper = (InfinitePagerAdapter) mPager.getAdapter(); PagerAdapter adapter = wrapper.getRealAdapter(); if (adapter != null) { adapter.unregisterDataSetObserver(dataChangeObserver); } removeAllViews(); }
public Fragment findViewFromObject(int position) { MyFragmentPagerAdapter fragmentAdapter; PagerAdapter adapter = getAdapter(); if (adapter instanceof MyFragmentPagerAdapter) { fragmentAdapter = (MyFragmentPagerAdapter) adapter; int count = adapter.getCount(); return fragmentAdapter.getItem(position >= count ? count - 1 : position); } return null; }
@Override protected boolean isReadyForPullEnd() { ViewPager refreshableView = getRefreshableView(); PagerAdapter adapter = refreshableView.getAdapter(); if (null != adapter) { return refreshableView.getCurrentItem() == adapter.getCount() - 1; } return false; }
public void setTabsFromPagerAdapter(@NonNull PagerAdapter adapter) { removeAllTabs(); for (int i = 0, count = adapter.getCount(); i < count; i++) { addTab(adapter.getPageTitle(i), getPageDrawable(adapter, i)); } mSplit = new ImageView(getContext()); mSplit.setBackgroundColor(splitColor); addView(mSplit, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); invalidate(); mCurrentSelectedPos = -1; setTabSelected(0, true); }
public View findViewFromObject(int position) { Object o = mObjs.get(Integer.valueOf(position)); if (o == null) { return null; } PagerAdapter a = getAdapter(); View v; for (int i = 0; i < getChildCount(); i++) { v = getChildAt(i); if (a.isViewFromObject(v, o)) return v; } return null; }
private void notifyDataSetInvalidated() { PagerAdapter adapter = mViewPager.getAdapter(); final int count = adapter.getCount(); for (int i = 0; i < count; i++) { TextView tv = getTabView(i); CharSequence title = adapter.getPageTitle(i); if (title == null) title = "NULL"; tv.setText(title); } requestLayout(); }
@Override public View createTabView(ViewGroup container, int position, PagerAdapter adapter) { View tabView = mInflater.inflate(mTabViewLayoutId, container, false); View tabTextOrImageView = tabView.findViewById(mTabViewTextOrImageViewId); switch (mTabMode) { case TITLE_ONLY: { TextView tabTextView = (TextView) tabTextOrImageView; tabTextView.setText(adapter.getPageTitle(position)); // TODO Set Color? break; } case ICON_ONLY: { if (adapter instanceof IconTabProvider) { ImageView tabImageView = (ImageView) tabTextOrImageView; tabImageView.setImageResource(((IconTabProvider) adapter).getPageIconResId(position)); // TODO Set Color? } else { throw new ClassCastException( "pager adapter must implements NiceTabLayout.IconTabProvider"); } break; } case BOTH: { TextView tabTextView = (TextView) tabTextOrImageView; tabTextView.setText(adapter.getPageTitle(position)); if (adapter instanceof IconTabProvider) { final int drawablePadding = tabTextView.getCompoundDrawablePadding(); tabTextView.setCompoundDrawablesWithIntrinsicBounds( 0, ((IconTabProvider) adapter).getPageIconResId(position), 0, 0); tabTextView.setCompoundDrawablePadding(drawablePadding); } else { throw new ClassCastException( "pager adapter must implements NiceTabLayout.IconTabProvider"); } // TODO Set Color? break; } default: { throw new IllegalStateException("Invalid tab mode: " + mTabMode); } } return tabView; }
/** 重新获取嵌套的内容视图 */ private void regetNestedContentView() { int currentItem = mDirectViewPager.getCurrentItem(); PagerAdapter adapter = mDirectViewPager.getAdapter(); if (adapter instanceof FragmentPagerAdapter || adapter instanceof FragmentStatePagerAdapter) { Fragment item = (Fragment) adapter.instantiateItem(mDirectViewPager, currentItem); mNestedContentView = item.getView(); // 清空之前的 mNestedNormalView = null; mNestedAbsListView = null; mNestedRecyclerView = null; mNestedScrollView = null; mNestedWebView = null; if (mNestedContentView instanceof AbsListView) { mNestedAbsListView = (AbsListView) mNestedContentView; mNestedAbsListView.setOnScrollListener(mLvOnScrollListener); if (!isHeaderViewCompleteInvisible()) { mNestedAbsListView.setSelection(0); } } else if (mNestedContentView instanceof RecyclerView) { mNestedRecyclerView = (RecyclerView) mNestedContentView; mNestedRecyclerView.removeOnScrollListener(mRvOnScrollListener); mNestedRecyclerView.addOnScrollListener(mRvOnScrollListener); if (!isHeaderViewCompleteInvisible()) { mNestedRecyclerView.scrollToPosition(0); } } else if (mNestedContentView instanceof ScrollView) { mNestedScrollView = (ScrollView) mNestedContentView; if (!isHeaderViewCompleteInvisible()) { mNestedScrollView.scrollTo(mNestedScrollView.getScrollX(), 0); } } else if (mNestedContentView instanceof WebView) { mNestedWebView = (WebView) mNestedContentView; if (!isHeaderViewCompleteInvisible()) { mNestedWebView.scrollTo(mNestedWebView.getScrollX(), 0); } } else { mNestedNormalView = mNestedContentView; } } else { throw new IllegalStateException( BGAStickyNavLayout.class.getSimpleName() + "的第三个子控件为ViewPager时,其adapter必须是FragmentPagerAdapter或者FragmentStatePagerAdapter"); } }
@Override void showDetail(int position) { clearMultiChoice(); detailEmptyView.setVisibility(View.GONE); detailSource.startUpdate(detailTarget); if (lastPosition > -1) { detailSource.destroyItem(detailTarget, lastPosition, handle); } lastPosition = position; handle = detailSource.instantiateItem(detailTarget, position); detailSource.finishUpdate(detailTarget); }
private CharSequence getTitle(int i) { CharSequence title = mPagerAdapter.getPageTitle(i); if (title == null) { title = EMPTY_TITLE; } return title.toString(); }
/** * 设置Adapter * * @param adapter */ public void setAdapter(PagerAdapter adapter) { mViewPager.setAdapter(adapter); mViewPager.addOnPageChangeListener(this); mAdapter = adapter; dataSetChanged(); adapter.registerDataSetObserver(new JPagerObserver()); }
/** 开始播放 仅当view正在显示 且 触摸等待时间过后 播放 */ private void startPlay() { if (delay <= 0 || mAdapter.getCount() <= 1) { return; } if (timer != null) { timer.cancel(); } timer = new Timer(); // 用一个timer定时设置当前项为下一项 timer.schedule( new TimerTask() { @Override public void run() { if (isShown() && System.currentTimeMillis() - mRecentTouchTime > delay) new Handler(Looper.getMainLooper()) .post( new Runnable() { @Override public void run() { int cur = mViewPager.getCurrentItem() + 1; if (cur >= mAdapter.getCount()) { cur = 0; } mViewPager.setCurrentItem(cur); if (mHintView != null) ((HintView) mHintView).setCurrent(cur); } }); } }, delay, delay); }
private void clearDetail(boolean showEmptyView) { clearMultiChoice(); detailSource.startUpdate(detailTarget); if (lastPosition > -1) { detailSource.destroyItem(detailTarget, lastPosition, handle); } lastPosition = -1; detailSource.finishUpdate(detailTarget); if (showEmptyView) { detailEmptyView.setVisibility(View.VISIBLE); } }
public void notifyDataSetChanged() { tabsContainer.removeAllViews(); PagerAdapter adapter = pager.getAdapter(); tabCount = adapter.getCount(); for (int i = 0; i < tabCount; i++) { if (adapter instanceof IconTabProvider) { IconTabProvider ipa = ((IconTabProvider) adapter); if (TEKST_DER_FADER_OVER_I_IKONER) { Bitmap res = ipa.getPageIconBitmap(i); int resId = ipa.getPageIconResId(i); if (resId != 0 || res != null) addIconTabBådeTekstOgBillede(i, resId, res, ipa.getPageContentDescription(i)); else addTextTab(i, adapter.getPageTitle(i).toString()); } else { addIconTab(i, ipa.getPageIconResId(i), ipa.getPageContentDescription(i)); } } else { addTextTab(i, adapter.getPageTitle(i).toString()); } } updateTabStyles(); getViewTreeObserver() .addOnGlobalLayoutListener( new OnGlobalLayoutListener() { @SuppressWarnings("deprecation") @SuppressLint("NewApi") @Override public void onGlobalLayout() { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { getViewTreeObserver().removeGlobalOnLayoutListener(this); } else { getViewTreeObserver().removeOnGlobalLayoutListener(this); } currentPosition = pager.getCurrentItem(); scrollToChild(currentPosition, 0); } }); }
private void notifyDataSetChanged() { mTabContainer.removeAllViews(); PagerAdapter adapter = mViewPager.getAdapter(); final int count = adapter.getCount(); if (mSelectedPosition > count) mSelectedPosition = count - 1; for (int i = 0; i < count; i++) { CharSequence title = adapter.getPageTitle(i); if (title == null) title = "NULL"; CheckedTextView tv = new CheckedTextView(getContext()); tv.setCheckMarkDrawable(null); tv.setText(title); tv.setGravity(Gravity.CENTER); tv.setTextAppearance(getContext(), mTextApperance); tv.setSingleLine(true); tv.setEllipsize(TruncateAt.END); tv.setOnClickListener(this); tv.setTag(i); if (mTabRippleStyle > 0) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) tv.setBackground(new RippleDrawable.Builder(getContext(), mTabRippleStyle).build()); else tv.setBackgroundDrawable( new RippleDrawable.Builder(getContext(), mTabRippleStyle).build()); } if (mMode == MODE_SCROLL) { tv.setPadding(mTabPadding, 0, mTabPadding, 0); mTabContainer.addView( tv, new ViewGroup.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT)); } else if (mMode == MODE_FIXED) { LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT); params.weight = 1f; mTabContainer.addView(tv, params); } } setCurrentItem(mSelectedPosition); requestLayout(); }
/** * * * <ul> * if stopScrollWhenTouch is true * <li>if event is down, stop auto scroll. * <li>if event is up, start auto scroll again. * </ul> */ @Override public boolean dispatchTouchEvent(MotionEvent ev) { int action = MotionEventCompat.getActionMasked(ev); if (stopScrollWhenTouch) { if ((action == MotionEvent.ACTION_DOWN) && isAutoScroll) { isStopByTouch = true; stopAutoScroll(); } else if (ev.getAction() == MotionEvent.ACTION_UP && isStopByTouch) { startAutoScroll(); } } if (slideBorderMode == SLIDE_BORDER_MODE_TO_PARENT || slideBorderMode == SLIDE_BORDER_MODE_CYCLE) { touchX = ev.getX(); if (ev.getAction() == MotionEvent.ACTION_DOWN) { downX = touchX; } int currentItem = getCurrentItem(); PagerAdapter adapter = getAdapter(); int pageCount = adapter == null ? 0 : adapter.getCount(); /** * current index is first one and slide to right or current index is last one and slide to * left.<br> * if slide border mode is to parent, then requestDisallowInterceptTouchEvent false.<br> * else scroll to last one when current item is first one, scroll to first one when current * item is last one. */ if ((currentItem == 0 && downX <= touchX) || (currentItem == pageCount - 1 && downX >= touchX)) { if (slideBorderMode == SLIDE_BORDER_MODE_TO_PARENT) { getParent().requestDisallowInterceptTouchEvent(false); } else { if (pageCount > 1) { setCurrentItem(pageCount - currentItem - 1, isBorderAnimation); } getParent().requestDisallowInterceptTouchEvent(true); } return super.dispatchTouchEvent(ev); } } getParent().requestDisallowInterceptTouchEvent(true); return super.dispatchTouchEvent(ev); }
private int getPageDrawable(@NonNull PagerAdapter adapter, int position) { try { Method method = adapter.getClass().getMethod("getPageDrawable", int.class); return (int) method.invoke(adapter, position); } catch (Exception e) { throw new RuntimeException("public int getPageDrawable(int postiion) Method not impl!"); } }
/** * 移除表情组 * * @param position */ public void removeEmojiconGroup(int position) { if (position > groupEntities.size() - 1) { return; } if (pagerAdapter != null) { pagerAdapter.notifyDataSetChanged(); } }
@Override public void notifyDataSetChanged() { mLogger.d("notifyDataSetChanged"); super.notifyDataSetChanged(); for (ViewHolder viewHolder : getAttachedViewHolders()) { onNotifyItemChanged(viewHolder); } }
private void updateDataDetail(Integer index) { Log.i("StoreMainActivity - updateData", "Start"); List<Fragment> fragments = this.getProductDetailFragments(); // Instantiate a ViewPager and a PagerAdapter. mPager = (ViewPager) findViewById(R.id.storeDetailPager); mPagerAdapter = new CustomPagerAdapter(getSupportFragmentManager(), fragments); mPager.setAdapter(mPagerAdapter); mPagerAdapter.notifyDataSetChanged(); mPager.setCurrentItem(index); mPager.setOnPageChangeListener( new OnPageChangeListener() { @Override public void onPageSelected(int arg0) {} @Override public void onPageScrolled(int arg0, float arg1, int arg2) {} @Override public void onPageScrollStateChanged(int arg0) { Log.i("StoreMainActivity - onPageScrollStateChanged", "Start"); TextView tvPage = (TextView) findViewById(R.id.tvStoreDetailPage); if (listProduct.size() > 0) { String pageDisplay = mPager.getCurrentItem() + 1 + "/" + mPagerAdapter.getCount(); tvPage.setText(pageDisplay); } ImageView btnPagePrevious = (ImageView) findViewById(R.id.btnStoreDetailPagePrevious); ImageView btnPageNext = (ImageView) findViewById(R.id.btnStoreDetailPageNext); if (mPagerAdapter.getCount() > 1) { if (mPager.getCurrentItem() == 0) { btnPagePrevious.setImageAlpha(70); btnPageNext.setImageAlpha(255); } else if (mPager.getCurrentItem() == (mPagerAdapter.getCount() - 1)) { btnPageNext.setImageAlpha(70); btnPagePrevious.setImageAlpha(255); } else { btnPagePrevious.setImageAlpha(255); } } else { btnPageNext.setImageAlpha(70); btnPagePrevious.setImageAlpha(70); } ProductInfo product = listProduct.get(mPager.getCurrentItem()); if (productTransactionDetailInfo == null) { productTransactionDetailInfo = new TransactionDetailInfo(); } productTransactionDetailInfo.setCategoryId(product.getCategoryId()); productTransactionDetailInfo.setProductId(product.getProductId()); productTransactionDetailInfo.setProductName(product.getName()); productTransactionDetailInfo.setUnitPrice(product.getUnitPrice()); } }); this.updatePageNumView(); }