In Your Activity onCreationOptionsMenu write this.
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.menu, menu)
val search = menu.findItem(R.id.search)
val searchView = search.actionView as androidx.appcompat.widget.SearchView
searchView.setOnQueryTextListener(object :
androidx.appcompat.widget.SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String?): Boolean {
if (query != null && query.isNotEmpty()) {
viewModel.searchResult(query)
}
return false
}
override fun onQueryTextChange(newText: String?): Boolean {
return true
}
})
return super.onCreateOptionsMenu(menu)}
In your view Model write this. Once
private val _searchResultData = SafeMediatorLiveData(initialValue = SearchResultResponse(emptyList()))
fun searchResult(skillSetToSearch: String) {
// val arrayList = callFiletoSearchString(skillSetToSearch)
_searchResultData.update(searchListResponse = arrayList)
}
SafeMediatorLive Data class will look like this
class SafeMediatorLiveData<T : Any>(initialValue: T) : MediatorLiveData<T>() {
init {
value = initialValue
}
override fun getValue(): T = super.getValue()!!
}