diff options
| author | SammysHP <sven@sammyshp.de> | 2011-12-03 13:12:33 +0100 |
|---|---|---|
| committer | SammysHP <sven@sammyshp.de> | 2011-12-03 13:12:33 +0100 |
| commit | fbb191bb1442f1e1ad983c251866404e7648228d (patch) | |
| tree | 20986d50bc0f6d1198ac742cc84d474665d05774 | |
| parent | 2ee316f47764cd69a770a0f95de527c923adfeb6 (diff) | |
| download | cgeo-fbb191bb1442f1e1ad983c251866404e7648228d.zip cgeo-fbb191bb1442f1e1ad983c251866404e7648228d.tar.gz cgeo-fbb191bb1442f1e1ad983c251866404e7648228d.tar.bz2 | |
Update ViewPagerIndicator and fix a few warnings there.
| -rw-r--r-- | main/src/com/viewpagerindicator/PageIndicator.java | 5 | ||||
| -rw-r--r-- | main/src/com/viewpagerindicator/TitlePageIndicator.java | 29 |
2 files changed, 31 insertions, 3 deletions
diff --git a/main/src/com/viewpagerindicator/PageIndicator.java b/main/src/com/viewpagerindicator/PageIndicator.java index 64786d2..26414d8 100644 --- a/main/src/com/viewpagerindicator/PageIndicator.java +++ b/main/src/com/viewpagerindicator/PageIndicator.java @@ -55,4 +55,9 @@ public interface PageIndicator extends ViewPager.OnPageChangeListener { * @param listener */ public void setOnPageChangeListener(ViewPager.OnPageChangeListener listener); + + /** + * Notify the indicator that the fragment list has changed. + */ + public void notifyDataSetChanged(); } diff --git a/main/src/com/viewpagerindicator/TitlePageIndicator.java b/main/src/com/viewpagerindicator/TitlePageIndicator.java index 86236d2..17ec2bd 100644 --- a/main/src/com/viewpagerindicator/TitlePageIndicator.java +++ b/main/src/com/viewpagerindicator/TitlePageIndicator.java @@ -293,10 +293,22 @@ public class TitlePageIndicator extends View implements PageIndicator { protected void onDraw(Canvas canvas) { super.onDraw(canvas); + if (mViewPager == null) { + return; + } + final int count = mViewPager.getAdapter().getCount(); + if (count == 0) { + return; + } + //Calculate views bounds ArrayList<RectF> bounds = calculateAllBounds(mPaintText); - final int count = mViewPager.getAdapter().getCount(); + //Make sure we're on a page that still exists + if (mCurrentPage >= bounds.size()) { + setCurrentItem(bounds.size()-1); + } + final int countMinusOne = count - 1; final float halfWidth = getWidth() / 2f; final int left = getLeft(); @@ -426,11 +438,17 @@ public class TitlePageIndicator extends View implements PageIndicator { canvas.drawPath(mPath, mPaintFooterIndicator); mPaintFooterIndicator.setAlpha(0xFF); break; + + default: + break; } } + @Override public boolean onTouchEvent(android.view.MotionEvent ev) { - if (mViewPager == null) return false; + if ((mViewPager == null) || (mViewPager.getAdapter().getCount() == 0)) { + return false; + } final int action = ev.getAction(); @@ -506,7 +524,7 @@ public class TitlePageIndicator extends View implements PageIndicator { } return true; - }; + } /** * Set bounds for the right textView including clip padding. @@ -598,6 +616,11 @@ public class TitlePageIndicator extends View implements PageIndicator { } @Override + public void notifyDataSetChanged() { + invalidate(); + } + + @Override public void setCurrentItem(int item) { if (mViewPager == null) { throw new IllegalStateException("ViewPager has not been bound."); |
