Skip to content

Instantly share code, notes, and snippets.

@ivanalvarado
Last active May 10, 2019 04:14
Show Gist options
  • Save ivanalvarado/da4e83bcc883427fc31f050f554dacf3 to your computer and use it in GitHub Desktop.
Save ivanalvarado/da4e83bcc883427fc31f050f554dacf3 to your computer and use it in GitHub Desktop.
Naive implementation of Swipe-to-Refresh with LiveData
// DON'T DO THIS
class UserListActivity : AppCompatActivity() {
@Inject internal lateinit var viewModelFactory: ViewModelProvider.Factory
private lateinit var userListViewModel: UserListViewModel
private lateinit var swipeRefreshLayout: SwipeRefreshLayout
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
userListViewModel = ViewModelProviders.of(this, viewModelFactory).get(UserListViewModel::class.java)
setUpUi()
fetchUsers()
}
private fun setUpUi() {
swipeRefreshLayout = findViewById(R.id.user_list_swipe_refresh_layout)
swipeRefreshLayout.setOnRefreshListener {
userListViewModel.getUsers()
}
}
private fun fetchUsers() {
swipeRefreshLayout.isRefreshing = true
userListViewModel.getUsers().observe(this, Observer { users -> users?.let { displayUsers(it) } })
}
private fun displayUsers(users: List<UserModel>) {
swipeRefreshLayout.isRefreshing = false
// Display users...
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment