diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 684e77b0f..647a237a5 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -150,6 +150,7 @@ dependencies { implementation("androidx.hilt:hilt-work:${Versions.hilt_androidx}") implementation("androidx.hilt:hilt-lifecycle-viewmodel:${Versions.hilt_androidx}") + implementation("androidx.fragment:fragment-ktx:1.2.5") implementation("androidx.lifecycle:lifecycle-runtime-ktx:${Versions.lifecycle}") implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:${Versions.lifecycle}") implementation("androidx.room:room-ktx:${Versions.room}") 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 f051711c9..bfdd7e56f 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt +++ b/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt @@ -20,8 +20,8 @@ import androidx.appcompat.widget.SearchView import androidx.appcompat.widget.Toolbar import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.fragment.app.Fragment +import androidx.fragment.app.activityViewModels import androidx.lifecycle.Observer -import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import androidx.paging.PagedList import androidx.recyclerview.widget.DefaultItemAnimator @@ -126,7 +126,7 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL @BindView(R.id.recycler_view) lateinit var recyclerView: RecyclerView - private lateinit var taskListViewModel: TaskListViewModel + private val listViewModel: TaskListViewModel by activityViewModels() private lateinit var taskAdapter: TaskAdapter private var recyclerAdapter: TaskListRecyclerAdapter? = null private lateinit var filter: Filter @@ -197,14 +197,13 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL // set up list adapters taskAdapter = taskAdapterProvider.createTaskAdapter(filter) taskAdapter.setCollapsed(savedInstanceState?.getLongArray(EXTRA_COLLAPSED)) - taskListViewModel = ViewModelProvider(requireActivity()).get(TaskListViewModel::class.java) if (savedInstanceState != null) { searchQuery = savedInstanceState.getString(EXTRA_SEARCH) } - taskListViewModel.setFilter((if (searchQuery == null) filter else createSearchFilter(searchQuery!!))) + listViewModel.setFilter((if (searchQuery == null) filter else createSearchFilter(searchQuery!!))) (recyclerView.itemAnimator as DefaultItemAnimator).supportsChangeAnimations = false recyclerView.layoutManager = LinearLayoutManager(context) - taskListViewModel.observe( + listViewModel.observe( this, Observer { list: List -> submitList(list) @@ -298,11 +297,11 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL private fun searchByQuery(query: String?) { searchQuery = query?.trim { it <= ' ' } ?: "" if (searchQuery?.isEmpty() == true) { - taskListViewModel.searchByFilter( + listViewModel.searchByFilter( BuiltInFilterExposer.getMyTasksFilter(requireContext().resources)) } else { val savedFilter = createSearchFilter(searchQuery!!) - taskListViewModel.searchByFilter(savedFilter) + listViewModel.searchByFilter(savedFilter) } } @@ -483,7 +482,7 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL } fun loadTaskListContent() { - taskListViewModel.invalidate() + listViewModel.invalidate() } fun getFilter(): Filter { @@ -579,7 +578,7 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL } override fun onMenuItemActionCollapse(item: MenuItem): Boolean { - taskListViewModel.searchByFilter(filter) + listViewModel.searchByFilter(filter) searchDisposable?.dispose() searchQuery = null setupMenu()