mirror of
https://github.com/melihaksoy/Android-Kotlin-Modulerized-CleanArchitecture.git
synced 2026-04-30 12:44:22 +02:00
Test
This commit is contained in:
@@ -1,3 +1,11 @@
|
||||
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 SearchView.setOnQueryChangedListener(block: (String?) -> Unit) = setOnQueryTextListener(ClearFocusQueryTextListener(this, block))
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -11,6 +11,7 @@ import com.melih.core.base.lifecycle.BaseDaggerFragment
|
||||
import com.melih.core.extensions.containsIgnoreCase
|
||||
import com.melih.core.extensions.createFor
|
||||
import com.melih.core.extensions.observe
|
||||
import com.melih.core.extensions.setOnQueryChangedListener
|
||||
import com.melih.list.R
|
||||
import com.melih.list.databinding.ListBinding
|
||||
import com.melih.repository.entities.LaunchEntity
|
||||
@@ -44,22 +45,7 @@ class LaunchesFragment : BaseDaggerFragment<ListBinding>(), SwipeRefreshLayout.O
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
inflater.inflate(R.menu.menu_rocket_list, menu)
|
||||
|
||||
(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
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
setSearchQueryListener((menu.findItem(R.id.search).actionView as SearchView))
|
||||
super.onCreateOptionsMenu(menu, inflater)
|
||||
}
|
||||
|
||||
@@ -89,6 +75,12 @@ class LaunchesFragment : BaseDaggerFragment<ListBinding>(), SwipeRefreshLayout.O
|
||||
startActivity(Actions.openDetailFor(item.id))
|
||||
}
|
||||
|
||||
private fun setSearchQueryListener(searchView: SearchView) {
|
||||
searchView.setOnQueryChangedListener {
|
||||
filterItemListBy(it)
|
||||
}
|
||||
}
|
||||
|
||||
private fun filterItemListBy(query: String?) =
|
||||
if (!query.isNullOrBlank()) {
|
||||
itemList.filter {
|
||||
|
||||
Reference in New Issue
Block a user