fixed load indicator

This commit is contained in:
Mariotaku Lee 2016-07-03 14:42:28 +08:00
parent ba5da8080e
commit c1326955a7
14 changed files with 53 additions and 44 deletions

View File

@ -268,7 +268,7 @@ abstract class AbsActivitiesFragment protected constructor() : AbsContentListRec
} }
} }
setRefreshEnabled(true) refreshEnabled = true
if (loader !is IExtendedLoader || loader.isFromUser) { if (loader !is IExtendedLoader || loader.isFromUser) {
adapter.loadMoreSupportedPosition = if (hasMoreData(data)) ILoadMoreSupportAdapter.END else ILoadMoreSupportAdapter.NONE adapter.loadMoreSupportedPosition = if (hasMoreData(data)) ILoadMoreSupportAdapter.END else ILoadMoreSupportAdapter.NONE
var pos = -1 var pos = -1

View File

@ -129,20 +129,26 @@ abstract class AbsContentRecyclerViewFragment<A : LoadMoreSupportAdapter<Recycle
} }
override var refreshing: Boolean override var refreshing: Boolean
get () = false get () = swipeLayout.isRefreshing
set(refreshing) { set(value) {
val currentRefreshing = swipeLayout.isRefreshing val currentRefreshing = swipeLayout.isRefreshing
if (!currentRefreshing) { if (!currentRefreshing) {
updateRefreshProgressOffset() updateRefreshProgressOffset()
} }
if (refreshing == currentRefreshing) return if (value == currentRefreshing) return
val layoutRefreshing = refreshing && adapter?.loadMoreIndicatorPosition != ILoadMoreSupportAdapter.NONE val layoutRefreshing = value && adapter?.loadMoreIndicatorPosition != ILoadMoreSupportAdapter.NONE
swipeLayout.isRefreshing = layoutRefreshing swipeLayout.isRefreshing = layoutRefreshing
} }
var refreshEnabled: Boolean
get() = swipeLayout.isEnabled
set(value) {
swipeLayout.isEnabled = value
}
override fun onLoadMoreContents(@IndicatorPosition position: Long) { override fun onLoadMoreContents(@IndicatorPosition position: Long) {
setLoadMoreIndicatorPosition(position) setLoadMoreIndicatorPosition(position)
setRefreshEnabled(position == ILoadMoreSupportAdapter.NONE) refreshEnabled = position == ILoadMoreSupportAdapter.NONE
} }
override fun onAttach(context: Context?) { override fun onAttach(context: Context?) {
@ -243,10 +249,6 @@ abstract class AbsContentRecyclerViewFragment<A : LoadMoreSupportAdapter<Recycle
adapter?.loadMoreIndicatorPosition = position adapter?.loadMoreIndicatorPosition = position
} }
fun setRefreshEnabled(enabled: Boolean) {
swipeLayout.isEnabled = enabled
}
override fun triggerRefresh(): Boolean { override fun triggerRefresh(): Boolean {
return false return false
} }

View File

@ -252,7 +252,7 @@ abstract class AbsStatusesFragment protected constructor() : AbsContentListRecyc
lastReadPositionKey = lastPositionKey lastReadPositionKey = lastPositionKey
} }
} }
setRefreshEnabled(true) refreshEnabled = true
if (loader !is IExtendedLoader || loader.isFromUser) { if (loader !is IExtendedLoader || loader.isFromUser) {
if (hasMoreData(data)) { if (hasMoreData(data)) {
adapter.loadMoreSupportedPosition = ILoadMoreSupportAdapter.END adapter.loadMoreSupportedPosition = ILoadMoreSupportAdapter.END

View File

@ -306,7 +306,7 @@ abstract class CursorActivitiesFragment : AbsActivitiesFragment() {
refreshing = event.running refreshing = event.running
if (!event.running) { if (!event.running) {
setLoadMoreIndicatorPosition(ILoadMoreSupportAdapter.NONE) setLoadMoreIndicatorPosition(ILoadMoreSupportAdapter.NONE)
setRefreshEnabled(true) refreshEnabled = true
onLoadingFinished() onLoadingFinished()
} }
} }

View File

@ -26,6 +26,7 @@ import android.os.Bundle
import android.os.Handler import android.os.Handler
import android.support.v4.content.Loader import android.support.v4.content.Loader
import com.squareup.otto.Subscribe import com.squareup.otto.Subscribe
import kotlinx.android.synthetic.main.fragment_content_recyclerview.*
import org.mariotaku.sqliteqb.library.ArgsArray import org.mariotaku.sqliteqb.library.ArgsArray
import org.mariotaku.sqliteqb.library.Columns.Column import org.mariotaku.sqliteqb.library.Columns.Column
import org.mariotaku.sqliteqb.library.Expression import org.mariotaku.sqliteqb.library.Expression
@ -58,6 +59,11 @@ abstract class CursorStatusesFragment : AbsStatusesFragment() {
abstract val isFilterEnabled: Boolean abstract val isFilterEnabled: Boolean
abstract val notificationType: Int abstract val notificationType: Int
abstract val contentUri: Uri abstract val contentUri: Uri
override var refreshing: Boolean
get() = swipeLayout.isRefreshing
set(value) {
super.refreshing = value
}
override fun onStatusesLoaded(loader: Loader<List<ParcelableStatus>?>, data: List<ParcelableStatus>?) { override fun onStatusesLoaded(loader: Loader<List<ParcelableStatus>?>, data: List<ParcelableStatus>?) {
showContentOrError() showContentOrError()
@ -121,7 +127,7 @@ abstract class CursorStatusesFragment : AbsStatusesFragment() {
refreshing = event.running refreshing = event.running
if (!event.running) { if (!event.running) {
setLoadMoreIndicatorPosition(ILoadMoreSupportAdapter.NONE) setLoadMoreIndicatorPosition(ILoadMoreSupportAdapter.NONE)
setRefreshEnabled(true) refreshEnabled = true
showContentOrError() showContentOrError()
} }
} }

View File

@ -96,11 +96,6 @@ class DirectMessagesFragment : AbsContentListRecyclerViewFragment<MessageEntries
} }
} }
override var refreshing: Boolean = false
get() {
return twitterWrapper.isReceivedDirectMessagesRefreshing || twitterWrapper.isSentDirectMessagesRefreshing
}
override fun handleKeyboardShortcutRepeat(handler: KeyboardShortcutsHandler, override fun handleKeyboardShortcutRepeat(handler: KeyboardShortcutsHandler,
keyCode: Int, repeatCount: Int, keyCode: Int, repeatCount: Int,
event: KeyEvent, metaState: Int): Boolean { event: KeyEvent, metaState: Int): Boolean {
@ -142,7 +137,7 @@ class DirectMessagesFragment : AbsContentListRecyclerViewFragment<MessageEntries
adapter.loadMoreSupportedPosition = if (hasMoreData(cursor)) ILoadMoreSupportAdapter.END else ILoadMoreSupportAdapter.NONE adapter.loadMoreSupportedPosition = if (hasMoreData(cursor)) ILoadMoreSupportAdapter.END else ILoadMoreSupportAdapter.NONE
val accountIds = accountKeys val accountIds = accountKeys
adapter.setShowAccountsColor(accountIds.size > 1) adapter.setShowAccountsColor(accountIds.size > 1)
setRefreshEnabled(true) refreshEnabled = true
if (accountIds.size > 0) { if (accountIds.size > 0) {
val errorInfo = ErrorInfoStore.getErrorInfo(context, val errorInfo = ErrorInfoStore.getErrorInfo(context,
@ -181,7 +176,7 @@ class DirectMessagesFragment : AbsContentListRecyclerViewFragment<MessageEntries
if (event.uri == Inbox.CONTENT_URI && !event.running) { if (event.uri == Inbox.CONTENT_URI && !event.running) {
refreshing = false refreshing = false
setLoadMoreIndicatorPosition(ILoadMoreSupportAdapter.NONE) setLoadMoreIndicatorPosition(ILoadMoreSupportAdapter.NONE)
setRefreshEnabled(true) refreshEnabled = true
} }
} }
@ -335,7 +330,7 @@ class DirectMessagesFragment : AbsContentListRecyclerViewFragment<MessageEntries
private fun loadMoreMessages() { private fun loadMoreMessages() {
if (refreshing) return if (refreshing) return
setLoadMoreIndicatorPosition(ILoadMoreSupportAdapter.END) setLoadMoreIndicatorPosition(ILoadMoreSupportAdapter.END)
setRefreshEnabled(false) refreshEnabled = false
AsyncTaskUtils.executeTask(object : AsyncTask<Any, Any, Array<RefreshTaskParam>>() { AsyncTaskUtils.executeTask(object : AsyncTask<Any, Any, Array<RefreshTaskParam>>() {
override fun doInBackground(vararg params: Any): Array<RefreshTaskParam>? { override fun doInBackground(vararg params: Any): Array<RefreshTaskParam>? {

View File

@ -55,11 +55,6 @@ class HomeTimelineFragment : CursorStatusesFragment() {
refreshing = twitter.isHomeTimelineRefreshing refreshing = twitter.isHomeTimelineRefreshing
} }
override var refreshing: Boolean = false
get() {
return twitterWrapper.isHomeTimelineRefreshing
}
override fun getStatuses(param: RefreshTaskParam): Boolean { override fun getStatuses(param: RefreshTaskParam): Boolean {
if (!param.hasMaxIds()) return twitterWrapper.refreshAll(param.accountKeys) if (!param.hasMaxIds()) return twitterWrapper.refreshAll(param.accountKeys)
return twitterWrapper.getHomeTimelineAsync(param) return twitterWrapper.getHomeTimelineAsync(param)

View File

@ -90,7 +90,4 @@ class InteractionsTimelineFragment : CursorActivitiesFragment() {
@ReadPositionTag @ReadPositionTag
override val readPositionTag: String? = ReadPositionTag.ACTIVITIES_ABOUT_ME override val readPositionTag: String? = ReadPositionTag.ACTIVITIES_ABOUT_ME
override var refreshing: Boolean = false
get() = false
} }

View File

@ -40,7 +40,7 @@ class ItemsListFragment : AbsContentListRecyclerViewFragment<VariousItemsAdapter
super.onActivityCreated(savedInstanceState) super.onActivityCreated(savedInstanceState)
registerForContextMenu(recyclerView) registerForContextMenu(recyclerView)
loaderManager.initLoader(0, null, this) loaderManager.initLoader(0, null, this)
setRefreshEnabled(false) refreshEnabled = false
showContent() showContent()
} }
@ -107,8 +107,10 @@ class ItemsListFragment : AbsContentListRecyclerViewFragment<VariousItemsAdapter
adapter!!.setData(null) adapter!!.setData(null)
} }
override var refreshing: Boolean = false override var refreshing: Boolean
get() = false get() = false
set(value) {
}
override fun onCreateContextMenu(menu: ContextMenu, v: View, menuInfo: ContextMenu.ContextMenuInfo?) { override fun onCreateContextMenu(menu: ContextMenu, v: View, menuInfo: ContextMenu.ContextMenuInfo?) {
if (!userVisibleHint || menuInfo == null) return if (!userVisibleHint || menuInfo == null) return
@ -150,10 +152,10 @@ class ItemsListFragment : AbsContentListRecyclerViewFragment<VariousItemsAdapter
return false return false
} }
class ItemsLoader(context: Context, private val mArguments: Bundle) : AsyncTaskLoader<List<*>>(context) { class ItemsLoader(context: Context, private val arguments: Bundle) : AsyncTaskLoader<List<*>>(context) {
override fun loadInBackground(): List<*> { override fun loadInBackground(): List<*> {
return mArguments.getParcelableArrayList<Parcelable>(EXTRA_ITEMS) return arguments.getParcelableArrayList<Parcelable>(EXTRA_ITEMS)
} }
override fun onStartLoading() { override fun onStartLoading() {

View File

@ -47,11 +47,14 @@ abstract class ParcelableGroupsFragment : AbsContentListRecyclerViewFragment<Par
val nextCursor: Long = 0 val nextCursor: Long = 0
val prevCursor: Long = 0 val prevCursor: Long = 0
override var refreshing: Boolean = false override var refreshing: Boolean
get() { get() {
if (context == null || isDetached) return false if (context == null || isDetached) return false
return loaderManager.hasRunningLoaders() return loaderManager.hasRunningLoaders()
} }
set(value) {
super.refreshing = value
}
override fun onCreateAdapter(context: Context): ParcelableGroupsAdapter { override fun onCreateAdapter(context: Context): ParcelableGroupsAdapter {
return ParcelableGroupsAdapter(context) return ParcelableGroupsAdapter(context)
@ -76,13 +79,13 @@ abstract class ParcelableGroupsFragment : AbsContentListRecyclerViewFragment<Par
adapter!!.setData(data) adapter!!.setData(data)
if (loader !is IExtendedLoader || loader.isFromUser) { if (loader !is IExtendedLoader || loader.isFromUser) {
adapter.loadMoreSupportedPosition = if (hasMoreData(data)) ILoadMoreSupportAdapter.END else ILoadMoreSupportAdapter.NONE adapter.loadMoreSupportedPosition = if (hasMoreData(data)) ILoadMoreSupportAdapter.END else ILoadMoreSupportAdapter.NONE
setRefreshEnabled(true) refreshEnabled = true
} }
if (loader is IExtendedLoader) { if (loader is IExtendedLoader) {
loader.isFromUser = false loader.isFromUser = false
} }
showContent() showContent()
setRefreshEnabled(true) refreshEnabled = true
refreshing = false refreshing = false
setLoadMoreIndicatorPosition(ILoadMoreSupportAdapter.NONE) setLoadMoreIndicatorPosition(ILoadMoreSupportAdapter.NONE)
} }

View File

@ -126,7 +126,7 @@ abstract class ParcelableStatusesFragment : AbsStatusesFragment() {
} }
override fun onStatusesLoaded(loader: Loader<List<ParcelableStatus>?>, data: List<ParcelableStatus>?) { override fun onStatusesLoaded(loader: Loader<List<ParcelableStatus>?>, data: List<ParcelableStatus>?) {
setRefreshEnabled(true) refreshEnabled = true
refreshing = false refreshing = false
setLoadMoreIndicatorPosition(ILoadMoreSupportAdapter.NONE) setLoadMoreIndicatorPosition(ILoadMoreSupportAdapter.NONE)
val adapter = adapter val adapter = adapter
@ -197,11 +197,14 @@ abstract class ParcelableStatusesFragment : AbsStatusesFragment() {
return true return true
} }
override var refreshing: Boolean = false override var refreshing: Boolean
get() { get() {
if (context == null || isDetached) return false if (context == null || isDetached) return false
return loaderManager.hasRunningLoaders() return loaderManager.hasRunningLoaders()
} }
set(value) {
super.refreshing = value
}
override fun onSaveInstanceState(outState: Bundle?) { override fun onSaveInstanceState(outState: Bundle?) {
super.onSaveInstanceState(outState) super.onSaveInstanceState(outState)

View File

@ -78,7 +78,7 @@ abstract class ParcelableUserListsFragment : AbsContentListRecyclerViewFragment<
adapter!!.setData(data) adapter!!.setData(data)
if (loader !is IExtendedLoader || loader.isFromUser) { if (loader !is IExtendedLoader || loader.isFromUser) {
adapter.loadMoreSupportedPosition = if (hasMoreData(data)) ILoadMoreSupportAdapter.END else ILoadMoreSupportAdapter.NONE adapter.loadMoreSupportedPosition = if (hasMoreData(data)) ILoadMoreSupportAdapter.END else ILoadMoreSupportAdapter.NONE
setRefreshEnabled(true) refreshEnabled = true
} }
if (loader is IExtendedLoader) { if (loader is IExtendedLoader) {
loader.isFromUser = false loader.isFromUser = false
@ -88,7 +88,7 @@ abstract class ParcelableUserListsFragment : AbsContentListRecyclerViewFragment<
prevCursor = loader.nextCursor prevCursor = loader.nextCursor
} }
showContent() showContent()
setRefreshEnabled(true) refreshEnabled = true
refreshing = false refreshing = false
setLoadMoreIndicatorPosition(ILoadMoreSupportAdapter.NONE) setLoadMoreIndicatorPosition(ILoadMoreSupportAdapter.NONE)
} }

View File

@ -80,11 +80,14 @@ abstract class ParcelableUsersFragment protected constructor() : AbsContentListR
super.onStop() super.onStop()
} }
override var refreshing: Boolean = false override var refreshing: Boolean
get() { get() {
if (context == null || isDetached) return false if (context == null || isDetached) return false
return loaderManager.hasRunningLoaders() return loaderManager.hasRunningLoaders()
} }
set(value) {
super.refreshing = value
}
override fun onCreateAdapter(context: Context): ParcelableUsersAdapter { override fun onCreateAdapter(context: Context): ParcelableUsersAdapter {
val adapter = ParcelableUsersAdapter(context) val adapter = ParcelableUsersAdapter(context)
@ -97,13 +100,13 @@ abstract class ParcelableUsersFragment protected constructor() : AbsContentListR
adapter.setData(data) adapter.setData(data)
if (loader !is IExtendedLoader || loader.isFromUser) { if (loader !is IExtendedLoader || loader.isFromUser) {
adapter.loadMoreSupportedPosition = if (hasMoreData(data)) ILoadMoreSupportAdapter.END else ILoadMoreSupportAdapter.NONE adapter.loadMoreSupportedPosition = if (hasMoreData(data)) ILoadMoreSupportAdapter.END else ILoadMoreSupportAdapter.NONE
setRefreshEnabled(true) refreshEnabled = true
} }
if (loader is IExtendedLoader) { if (loader is IExtendedLoader) {
loader.isFromUser = false loader.isFromUser = false
} }
showContent() showContent()
setRefreshEnabled(true) refreshEnabled = true
refreshing = false refreshing = false
setLoadMoreIndicatorPosition(ILoadMoreSupportAdapter.NONE) setLoadMoreIndicatorPosition(ILoadMoreSupportAdapter.NONE)
} }

View File

@ -34,11 +34,14 @@ class UserMediaTimelineFragment : AbsContentRecyclerViewFragment<StaggeredGridPa
layoutManager!!.scrollToPositionWithOffset(position, offset) layoutManager!!.scrollToPositionWithOffset(position, offset)
} }
override var refreshing: Boolean = false override var refreshing: Boolean
get() { get() {
if (context == null || isDetached) return false if (context == null || isDetached) return false
return loaderManager.hasRunningLoaders() return loaderManager.hasRunningLoaders()
} }
set(value) {
super.refreshing = value
}
override fun onActivityCreated(savedInstanceState: Bundle?) { override fun onActivityCreated(savedInstanceState: Bundle?) {