This commit is contained in:
Melih Aksoy
2019-07-03 12:05:35 +02:00
parent d52ffb86c4
commit 336ce1009d
3 changed files with 39 additions and 16 deletions

View File

@@ -1,3 +1,11 @@
package com.melih.core.extensions package com.melih.core.extensions
import androidx.appcompat.widget.SearchView
import com.melih.core.utils.ClearFocusQueryTextListener
/**
* Shorthand for [contains] with ignoreCase set [true]
*/
fun CharSequence.containsIgnoreCase(other: CharSequence) = contains(other, true) fun CharSequence.containsIgnoreCase(other: CharSequence) = contains(other, true)
fun SearchView.setOnQueryChangedListener(block: (String?) -> Unit) = setOnQueryTextListener(ClearFocusQueryTextListener(this, block))

View File

@@ -0,0 +1,23 @@
package com.melih.core.utils
import androidx.appcompat.widget.SearchView
/**
* Simplifying [OnQueryTextListener][android.widget.SearchView.OnQueryTextListener]
*/
class ClearFocusQueryTextListener(
private val view: SearchView,
private val onQueryChangeBlock: (String?) -> Unit
) : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String?): Boolean {
view.clearFocus()
return true
}
override fun onQueryTextChange(newText: String?): Boolean {
onQueryChangeBlock(newText)
return true
}
}

View File

@@ -11,6 +11,7 @@ import com.melih.core.base.lifecycle.BaseDaggerFragment
import com.melih.core.extensions.containsIgnoreCase import com.melih.core.extensions.containsIgnoreCase
import com.melih.core.extensions.createFor import com.melih.core.extensions.createFor
import com.melih.core.extensions.observe import com.melih.core.extensions.observe
import com.melih.core.extensions.setOnQueryChangedListener
import com.melih.list.R import com.melih.list.R
import com.melih.list.databinding.ListBinding import com.melih.list.databinding.ListBinding
import com.melih.repository.entities.LaunchEntity import com.melih.repository.entities.LaunchEntity
@@ -44,22 +45,7 @@ class LaunchesFragment : BaseDaggerFragment<ListBinding>(), SwipeRefreshLayout.O
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.menu_rocket_list, menu) inflater.inflate(R.menu.menu_rocket_list, menu)
setSearchQueryListener((menu.findItem(R.id.search).actionView as SearchView))
(menu.findItem(R.id.search).actionView as SearchView).apply {
setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String?): Boolean {
clearFocus()
return true
}
override fun onQueryTextChange(newText: String?): Boolean {
launchesAdapter.submitList(filterItemListBy(newText))
return true
}
})
}
super.onCreateOptionsMenu(menu, inflater) super.onCreateOptionsMenu(menu, inflater)
} }
@@ -89,6 +75,12 @@ class LaunchesFragment : BaseDaggerFragment<ListBinding>(), SwipeRefreshLayout.O
startActivity(Actions.openDetailFor(item.id)) startActivity(Actions.openDetailFor(item.id))
} }
private fun setSearchQueryListener(searchView: SearchView) {
searchView.setOnQueryChangedListener {
filterItemListBy(it)
}
}
private fun filterItemListBy(query: String?) = private fun filterItemListBy(query: String?) =
if (!query.isNullOrBlank()) { if (!query.isNullOrBlank()) {
itemList.filter { itemList.filter {