aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSammysHP <sven@sammyshp.de>2011-12-03 13:12:33 +0100
committerSammysHP <sven@sammyshp.de>2011-12-03 13:12:33 +0100
commitfbb191bb1442f1e1ad983c251866404e7648228d (patch)
tree20986d50bc0f6d1198ac742cc84d474665d05774
parent2ee316f47764cd69a770a0f95de527c923adfeb6 (diff)
downloadcgeo-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.java5
-rw-r--r--main/src/com/viewpagerindicator/TitlePageIndicator.java29
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.");