Мне удалось реализовать SwipeRefreshLayout в моем проекте, и он работает, как и ожидалось, выполняя код обратного вызова, отображая счетчик и перезагружая соответствующие данные. И это работает снова и снова без проблем.
Однако проблема в том, что всякий раз, когда я выполняю жест нисходящий , спиннер правильно опускается, поворачиваясь по часовой стрелке синхронно c с жестом извлечения, но он сразу же возвращается наверх, как только касание отпущено , даже до завершения процесса обратного вызова. Вот как это было реализовано:
tableRefresh = SwipeRefreshLayout(this)
tableRefresh?.setOnRefreshListener {
tableRefresh?.isRefreshing = true
swipeRefreshHandler()
}
// global Intent
var cloudService: Intent? = null
private fun swipeRefreshHandler() {
// starts a server-update service
startService(cloudService?.setAction(serverManualSync))
}
cloudServiceBroadcastReceiver = object: BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
when (intent?.action) {
// server-update service notifies of completion
serverManualSyncComplete -> tableRefresh?.isRefreshing = false
// other cases
}
}
}
Опять же, нет никаких проблем с функциональностью как таковой, только то, что счетчик не остается видимым во время обратного вызова. И это работает с каждым последующим жестом.
Что я могу делать не так?