Skip to content

Instantly share code, notes, and snippets.

@demonar
Created December 24, 2019 21:06
Show Gist options
  • Save demonar/f5bc1504ff033cacdcec11240502b3b4 to your computer and use it in GitHub Desktop.
Save demonar/f5bc1504ff033cacdcec11240502b3b4 to your computer and use it in GitHub Desktop.
class SearchViewModel(): ViewModel(), KoinComponent {
val datasource: DataSource by inject()
val adapter: SearchRecyclerViewAdapter by inject {
parametersOf(datasource.elements)
}
var searchOrder = SortOrder.ASCENDING
set(value) {
field = value
filterData()
}
var searchText: String = ""
set(value) {
field = value
filterData()
}
private fun filterData() {
if (searchText.isEmpty()) {
resetList()
return
}
var filteredElements = datasource.elements.filter { it.text.contains(searchText) }
when(searchOrder) {
SortOrder.ASCENDING -> filteredElements.sortBy { it.text }
SortOrder.DESCENDING -> filteredElements.sortByDescending { it.text }
}
adapter.elements = datasource.elements.filter { it.text.contains(searchText) }
adapter.notifyDataSetChanged()
}
fun resetList() {
adapter.elements = datasource.elements
adapter.notifyDataSetChanged()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment