Skip to content

Instantly share code, notes, and snippets.

@demonar
Created December 24, 2019 00:12
Show Gist options
  • Save demonar/7ec54f533198a7f00cacf085b2e09636 to your computer and use it in GitHub Desktop.
Save demonar/7ec54f533198a7f00cacf085b2e09636 to your computer and use it in GitHub Desktop.
class SeachActivity : AppCompatActivity() {
lateinit var searchView: SearchView
private val vm: SearchViewModel by viewModel()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.search_activity_layout)
recyclerView.adapter = vm.adapter
recyclerView.addItemDecoration(DividerItemDecoration(recyclerView.context, DividerItemDecoration.VERTICAL))
configureTabs()
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.search_activity_menu, menu)
searchView = menu?.findItem(R.id.search_view)?.actionView as SearchView
configureSearch(searchView)
return true
}
private fun configureSearch(searchView: SearchView) {
searchView.setOnSearchClickListener { toggleTabs(true) }
searchView.setOnCloseListener {
toggleTabs(false)
vm.resetList()
return@setOnCloseListener false
}
searchView.setOnQueryTextListener(object: SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String?): Boolean { return true }
override fun onQueryTextChange(newText: String?): Boolean {
vm.searchText = newText ?: ""
return true
}
})
}
private fun toggleTabs(show: Boolean) {
tabs.visibility = if (show) View.VISIBLE else View.GONE
}
private fun configureTabs() {
addOnTabSelectedListener(object: TabLayout.OnTabSelectedListener {
override fun onTabReselected(p0: TabLayout.Tab?) {
vm.searchOrder = if (p0.position == 0) SortOrder.ASCENDING else SortOrder.DESCENDING
}
override fun onTabUnselected(p0: TabLayout.Tab?) { }
override fun onTabSelected(p0: TabLayout.Tab?) {
vm.searchOrder = if (p0.position == 0) SortOrder.ASCENDING else SortOrder.DESCENDING
}
})
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment