Skip to content

Commit 75c7af7

Browse files
author
Jens Claes
committed
Implemented a scroll-listener. Closes #47.
The scroll listener emits an event every time the first visible day has changed.
1 parent 9f9b25b commit 75c7af7

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ Use the following interfaces according to your need.
129129
- `mWeekView.setEmptyViewClickListener()` to get a callback when any empty space is clicked
130130
- `mWeekView.setEmptyViewLongPressListener()` to get a callback when any empty space is long pressed
131131
- `mWeekView.setDateTimeInterpreter()` to set your own labels for the calendar header row and header column
132+
- `mWeekView.setScrolledListener()` to get an event every time the first visible day has changed
132133

133134
Sample
134135
----------

library/src/main/java/com/alamkanak/weekview/WeekView.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ public class WeekView extends View {
108108
private EmptyViewClickListener mEmptyViewClickListener;
109109
private EmptyViewLongPressListener mEmptyViewLongPressListener;
110110
private DateTimeInterpreter mDateTimeInterpreter;
111+
private ScrolledListener mScrolledListener;
111112

112113
private final GestureDetector.SimpleOnGestureListener mGestureListener = new GestureDetector.SimpleOnGestureListener() {
113114

@@ -412,8 +413,12 @@ private void drawHeaderRowAndEvents(Canvas canvas) {
412413
}
413414

414415
// Iterate through each day.
416+
Calendar oldFirstVisibleDay = mFirstVisibleDay;
415417
mFirstVisibleDay = (Calendar) mToday.clone();
416418
mFirstVisibleDay.add(Calendar.DATE, leftDaysWithGaps);
419+
if(!mFirstVisibleDay.equals(oldFirstVisibleDay) && mScrolledListener != null){
420+
mScrolledListener.onFirstVisibleDayChanged(mFirstVisibleDay, oldFirstVisibleDay);
421+
}
417422
for (int dayNumber = leftDaysWithGaps + 1;
418423
dayNumber <= leftDaysWithGaps + mNumberOfVisibleDays + 1;
419424
dayNumber++) {
@@ -951,6 +956,13 @@ public EmptyViewLongPressListener getEmptyViewLongPressListener(){
951956
return mEmptyViewLongPressListener;
952957
}
953958

959+
public void setScrolledListener(ScrolledListener scrolledListener){
960+
this.mScrolledListener = scrolledListener;
961+
}
962+
963+
public ScrolledListener getScrolledListener(){
964+
return mScrolledListener;
965+
}
954966
/**
955967
* Get the interpreter which provides the text to show in the header column and the header row.
956968
* @return The date, time interpreter.
@@ -1418,6 +1430,17 @@ public interface EmptyViewLongPressListener {
14181430
public void onEmptyViewLongPress(Calendar time);
14191431
}
14201432

1433+
public interface ScrolledListener {
1434+
/**
1435+
* Called when the first visible day has changed.
1436+
*
1437+
* (this will also be called during the first draw of the weekview)
1438+
* @param newFirstVisibleDay The new first visible day
1439+
* @param oldFirstVisibleDay The old first visible day (is null on the first call).
1440+
*/
1441+
public void onFirstVisibleDayChanged(Calendar newFirstVisibleDay, Calendar oldFirstVisibleDay);
1442+
}
1443+
14211444

14221445
/////////////////////////////////////////////////////////////////
14231446
//

0 commit comments

Comments
 (0)