Add fragment kotlin extensions

pull/1047/head
Alex Baker 6 years ago
parent c36649fb54
commit 2c57d06980

@ -150,6 +150,7 @@ dependencies {
implementation("androidx.hilt:hilt-work:${Versions.hilt_androidx}") implementation("androidx.hilt:hilt-work:${Versions.hilt_androidx}")
implementation("androidx.hilt:hilt-lifecycle-viewmodel:${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-runtime-ktx:${Versions.lifecycle}")
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:${Versions.lifecycle}") implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:${Versions.lifecycle}")
implementation("androidx.room:room-ktx:${Versions.room}") implementation("androidx.room:room-ktx:${Versions.room}")

@ -20,8 +20,8 @@ import androidx.appcompat.widget.SearchView
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.paging.PagedList import androidx.paging.PagedList
import androidx.recyclerview.widget.DefaultItemAnimator import androidx.recyclerview.widget.DefaultItemAnimator
@ -126,7 +126,7 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL
@BindView(R.id.recycler_view) @BindView(R.id.recycler_view)
lateinit var recyclerView: RecyclerView lateinit var recyclerView: RecyclerView
private lateinit var taskListViewModel: TaskListViewModel private val listViewModel: TaskListViewModel by activityViewModels()
private lateinit var taskAdapter: TaskAdapter private lateinit var taskAdapter: TaskAdapter
private var recyclerAdapter: TaskListRecyclerAdapter? = null private var recyclerAdapter: TaskListRecyclerAdapter? = null
private lateinit var filter: Filter private lateinit var filter: Filter
@ -197,14 +197,13 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL
// set up list adapters // set up list adapters
taskAdapter = taskAdapterProvider.createTaskAdapter(filter) taskAdapter = taskAdapterProvider.createTaskAdapter(filter)
taskAdapter.setCollapsed(savedInstanceState?.getLongArray(EXTRA_COLLAPSED)) taskAdapter.setCollapsed(savedInstanceState?.getLongArray(EXTRA_COLLAPSED))
taskListViewModel = ViewModelProvider(requireActivity()).get(TaskListViewModel::class.java)
if (savedInstanceState != null) { if (savedInstanceState != null) {
searchQuery = savedInstanceState.getString(EXTRA_SEARCH) 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.itemAnimator as DefaultItemAnimator).supportsChangeAnimations = false
recyclerView.layoutManager = LinearLayoutManager(context) recyclerView.layoutManager = LinearLayoutManager(context)
taskListViewModel.observe( listViewModel.observe(
this, this,
Observer { list: List<TaskContainer> -> Observer { list: List<TaskContainer> ->
submitList(list) submitList(list)
@ -298,11 +297,11 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL
private fun searchByQuery(query: String?) { private fun searchByQuery(query: String?) {
searchQuery = query?.trim { it <= ' ' } ?: "" searchQuery = query?.trim { it <= ' ' } ?: ""
if (searchQuery?.isEmpty() == true) { if (searchQuery?.isEmpty() == true) {
taskListViewModel.searchByFilter( listViewModel.searchByFilter(
BuiltInFilterExposer.getMyTasksFilter(requireContext().resources)) BuiltInFilterExposer.getMyTasksFilter(requireContext().resources))
} else { } else {
val savedFilter = createSearchFilter(searchQuery!!) val savedFilter = createSearchFilter(searchQuery!!)
taskListViewModel.searchByFilter(savedFilter) listViewModel.searchByFilter(savedFilter)
} }
} }
@ -483,7 +482,7 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL
} }
fun loadTaskListContent() { fun loadTaskListContent() {
taskListViewModel.invalidate() listViewModel.invalidate()
} }
fun getFilter(): Filter { fun getFilter(): Filter {
@ -579,7 +578,7 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL
} }
override fun onMenuItemActionCollapse(item: MenuItem): Boolean { override fun onMenuItemActionCollapse(item: MenuItem): Boolean {
taskListViewModel.searchByFilter(filter) listViewModel.searchByFilter(filter)
searchDisposable?.dispose() searchDisposable?.dispose()
searchQuery = null searchQuery = null
setupMenu() setupMenu()

Loading…
Cancel
Save