Skip to content

Commit 336ce10

Browse files
author
Melih Aksoy
committed
Test
1 parent d52ffb8 commit 336ce10

File tree

3 files changed

+39
-16
lines changed

3 files changed

+39
-16
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
11
package com.melih.core.extensions
22

3+
import androidx.appcompat.widget.SearchView
4+
import com.melih.core.utils.ClearFocusQueryTextListener
5+
6+
/**
7+
* Shorthand for [contains] with ignoreCase set [true]
8+
*/
39
fun CharSequence.containsIgnoreCase(other: CharSequence) = contains(other, true)
10+
11+
fun SearchView.setOnQueryChangedListener(block: (String?) -> Unit) = setOnQueryTextListener(ClearFocusQueryTextListener(this, block))
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.melih.core.utils
2+
3+
import androidx.appcompat.widget.SearchView
4+
5+
6+
/**
7+
* Simplifying [OnQueryTextListener][android.widget.SearchView.OnQueryTextListener]
8+
*/
9+
class ClearFocusQueryTextListener(
10+
private val view: SearchView,
11+
private val onQueryChangeBlock: (String?) -> Unit
12+
) : SearchView.OnQueryTextListener {
13+
14+
override fun onQueryTextSubmit(query: String?): Boolean {
15+
view.clearFocus()
16+
return true
17+
}
18+
19+
override fun onQueryTextChange(newText: String?): Boolean {
20+
onQueryChangeBlock(newText)
21+
return true
22+
}
23+
}

features/list/src/main/kotlin/com/melih/list/ui/LaunchesFragment.kt

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import com.melih.core.base.lifecycle.BaseDaggerFragment
1111
import com.melih.core.extensions.containsIgnoreCase
1212
import com.melih.core.extensions.createFor
1313
import com.melih.core.extensions.observe
14+
import com.melih.core.extensions.setOnQueryChangedListener
1415
import com.melih.list.R
1516
import com.melih.list.databinding.ListBinding
1617
import com.melih.repository.entities.LaunchEntity
@@ -44,22 +45,7 @@ class LaunchesFragment : BaseDaggerFragment<ListBinding>(), SwipeRefreshLayout.O
4445

4546
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
4647
inflater.inflate(R.menu.menu_rocket_list, menu)
47-
48-
(menu.findItem(R.id.search).actionView as SearchView).apply {
49-
setOnQueryTextListener(object : SearchView.OnQueryTextListener {
50-
51-
override fun onQueryTextSubmit(query: String?): Boolean {
52-
clearFocus()
53-
return true
54-
}
55-
56-
override fun onQueryTextChange(newText: String?): Boolean {
57-
launchesAdapter.submitList(filterItemListBy(newText))
58-
return true
59-
}
60-
})
61-
}
62-
48+
setSearchQueryListener((menu.findItem(R.id.search).actionView as SearchView))
6349
super.onCreateOptionsMenu(menu, inflater)
6450
}
6551

@@ -89,6 +75,12 @@ class LaunchesFragment : BaseDaggerFragment<ListBinding>(), SwipeRefreshLayout.O
8975
startActivity(Actions.openDetailFor(item.id))
9076
}
9177

78+
private fun setSearchQueryListener(searchView: SearchView) {
79+
searchView.setOnQueryChangedListener {
80+
filterItemListBy(it)
81+
}
82+
}
83+
9284
private fun filterItemListBy(query: String?) =
9385
if (!query.isNullOrBlank()) {
9486
itemList.filter {

0 commit comments

Comments
 (0)