diff --git a/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt b/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt index 6e615843b..48944986e 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt +++ b/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt @@ -60,6 +60,7 @@ import org.tasks.dialogs.DialogBuilder import org.tasks.dialogs.SortDialog import org.tasks.extensions.Context.toast import org.tasks.extensions.Fragment.safeStartActivityForResult +import org.tasks.extensions.setOnQueryTextListener import org.tasks.filters.PlaceFilter import org.tasks.intents.TaskIntents import org.tasks.locale.Locale @@ -267,7 +268,6 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL } menu.findItem(R.id.menu_voice_add).isVisible = device.voiceInputAvailable() search = menu.findItem(R.id.menu_search).setOnActionExpandListener(this) - (search.actionView as SearchView).setOnQueryTextListener(this) themeColor.apply(toolbar) } @@ -559,6 +559,7 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL } override fun onMenuItemActionExpand(item: MenuItem): Boolean { + search.setOnQueryTextListener(this) if (searchQuery == null) { searchByQuery("") } @@ -570,6 +571,7 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL } override fun onMenuItemActionCollapse(item: MenuItem): Boolean { + search.setOnQueryTextListener(null) listViewModel.searchByFilter(filter) searchJob?.cancel() searchQuery = null diff --git a/app/src/main/java/org/tasks/extensions/MenuItem.kt b/app/src/main/java/org/tasks/extensions/MenuItem.kt new file mode 100644 index 000000000..d70b84b4e --- /dev/null +++ b/app/src/main/java/org/tasks/extensions/MenuItem.kt @@ -0,0 +1,7 @@ +package org.tasks.extensions + +import android.view.MenuItem +import androidx.appcompat.widget.SearchView + +fun MenuItem.setOnQueryTextListener(listener: SearchView.OnQueryTextListener?) = + (actionView as? SearchView)?.setOnQueryTextListener(listener) \ No newline at end of file diff --git a/app/src/main/java/org/tasks/location/LocationPickerActivity.kt b/app/src/main/java/org/tasks/location/LocationPickerActivity.kt index fae564a5e..e7cff601e 100644 --- a/app/src/main/java/org/tasks/location/LocationPickerActivity.kt +++ b/app/src/main/java/org/tasks/location/LocationPickerActivity.kt @@ -39,6 +39,7 @@ import org.tasks.data.PlaceUsage import org.tasks.databinding.ActivityLocationPickerBinding import org.tasks.dialogs.DialogBuilder import org.tasks.extensions.Context.toast +import org.tasks.extensions.setOnQueryTextListener import org.tasks.injection.InjectingAppCompatActivity import org.tasks.location.LocationPickerAdapter.OnLocationPicked import org.tasks.location.LocationSearchAdapter.OnPredictionPicked @@ -120,7 +121,6 @@ class LocationPickerActivity : InjectingAppCompatActivity(), Toolbar.OnMenuItemC val menu = toolbar.menu search = menu.findItem(R.id.menu_search) search.setOnActionExpandListener(this) - (search.actionView as SearchView).setOnQueryTextListener(this) toolbar.setOnMenuItemClickListener(this) val themeColor = theme.themeColor themeColor.applyToStatusBarIcons(this) @@ -378,12 +378,14 @@ class LocationPickerActivity : InjectingAppCompatActivity(), Toolbar.OnMenuItemC } override fun onMenuItemActionExpand(item: MenuItem): Boolean { + search.setOnQueryTextListener(this) searchAdapter!!.submitList(emptyList()) recyclerView.adapter = searchAdapter return true } override fun onMenuItemActionCollapse(item: MenuItem): Boolean { + search.setOnQueryTextListener(null) recyclerView.adapter = recentsAdapter if (places.isEmpty()) { collapseToolbar()