just refresh the weekly fragments if events change, dont recreate them
This commit is contained in:
parent
e77ceeff2a
commit
bffb0ba0a1
3 changed files with 20 additions and 5 deletions
|
@ -31,4 +31,10 @@ class MyWeekPagerAdapter(fm: FragmentManager, val mWeekTimestamps: List<Int>, va
|
|||
mFragments[pos - 1]?.updateScrollY(y)
|
||||
mFragments[pos + 1]?.updateScrollY(y)
|
||||
}
|
||||
|
||||
fun updateCalendars(pos: Int) {
|
||||
for (i in -1..1) {
|
||||
mFragments[pos + i]?.updateCalendar()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -109,7 +109,7 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||
override fun onResume() {
|
||||
super.onResume()
|
||||
setupDayLabels()
|
||||
mCalendar.updateWeeklyCalendar(mWeekTimestamp)
|
||||
updateCalendar()
|
||||
|
||||
mView.week_events_scrollview.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
|
||||
override fun onGlobalLayout() {
|
||||
|
@ -140,6 +140,10 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||
}
|
||||
}
|
||||
|
||||
fun updateCalendar() {
|
||||
mCalendar.updateWeeklyCalendar(mWeekTimestamp)
|
||||
}
|
||||
|
||||
private fun setupDayLabels() {
|
||||
var curDay = Formatter.getDateTimeFromTS(mWeekTimestamp)
|
||||
val textColor = context!!.config.textColor
|
||||
|
@ -233,20 +237,23 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||
if (newHash == lastHash) {
|
||||
return
|
||||
}
|
||||
|
||||
lastHash = newHash
|
||||
this.events = events
|
||||
updateEvents()
|
||||
}
|
||||
|
||||
private fun updateEvents() {
|
||||
if (mWasDestroyed)
|
||||
if (mWasDestroyed) {
|
||||
return
|
||||
}
|
||||
|
||||
activity!!.runOnUiThread {
|
||||
if (context != null && isAdded)
|
||||
if (context != null && isAdded) {
|
||||
addEvents()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun addEvents() {
|
||||
val filtered = context!!.getFilteredEvents(events)
|
||||
|
@ -443,7 +450,8 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||
private fun getColumnWithId(id: Int) = mView.findViewById<ViewGroup>(mRes.getIdentifier("week_column_$id", "id", context!!.packageName))
|
||||
|
||||
fun updateScrollY(y: Int) {
|
||||
if (wasFragmentInit)
|
||||
if (wasFragmentInit) {
|
||||
mView.week_events_scrollview.scrollY = y
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -124,7 +124,8 @@ class WeekFragmentsHolder : MyFragmentHolder(), WeekFragmentListener {
|
|||
}
|
||||
|
||||
override fun refreshEvents() {
|
||||
setupFragment()
|
||||
val viewPager = weekHolder?.week_view_view_pager
|
||||
(viewPager?.adapter as? MyWeekPagerAdapter)?.updateCalendars(viewPager.currentItem)
|
||||
}
|
||||
|
||||
override fun shouldGoToTodayBeVisible() = currentWeekTS != thisWeekTS
|
||||
|
|
Loading…
Reference in a new issue