1
+ package com.arctouch.codechallenge.ui.home
2
+
3
+ import android.app.SearchManager
4
+ import android.content.Context
5
+ import android.os.Bundle
6
+ import android.view.*
7
+ import androidx.appcompat.widget.SearchView
8
+ import androidx.fragment.app.Fragment
9
+ import androidx.lifecycle.LifecycleOwner
10
+ import androidx.lifecycle.Observer
11
+ import com.arctouch.codechallenge.R
12
+ import kotlinx.android.synthetic.main.fragment_home.*
13
+ import org.koin.android.viewmodel.ext.android.viewModel
14
+
15
+ class HomePagedFragment : Fragment () {
16
+
17
+ private val mViewModel: HomePagedViewModel by viewModel()
18
+ private val homePagedListAdapter = HomePagedListAdapter ()
19
+ private lateinit var searchView: SearchView
20
+
21
+ override fun onCreateView (
22
+ inflater : LayoutInflater ,
23
+ container : ViewGroup ? ,
24
+ savedInstanceState : Bundle ?
25
+ ): View ? {
26
+ return inflater.inflate(R .layout.fragment_home_paged, container, false )
27
+ }
28
+
29
+ override fun onViewCreated (view : View , savedInstanceState : Bundle ? ) {
30
+ super .onViewCreated(view, savedInstanceState)
31
+ setHasOptionsMenu(true )
32
+ observeLiveData()
33
+ initializeList()
34
+ mViewModel.filterTextAll.value = " "
35
+ }
36
+
37
+ override fun onCreateOptionsMenu (menu : Menu , inflater : MenuInflater ) {
38
+ inflater.inflate(R .menu.search_menu, menu)
39
+ val searchAction = menu.findItem(R .id.search_action)
40
+ searchView = searchAction?.actionView as SearchView
41
+ configSearchView()
42
+ super .onCreateOptionsMenu(menu, inflater)
43
+ }
44
+
45
+ private fun configSearchView () {
46
+ val searchManager = activity?.getSystemService(Context .SEARCH_SERVICE ) as SearchManager
47
+ searchView.setSearchableInfo(searchManager.getSearchableInfo(activity?.componentName))
48
+ searchView.setOnQueryTextListener(object : SearchView .OnQueryTextListener {
49
+ override fun onQueryTextChange (newText : String? ): Boolean {
50
+ mViewModel.filterTextAll.value = newText
51
+ return true
52
+ }
53
+
54
+ override fun onQueryTextSubmit (query : String? ): Boolean {
55
+ return true
56
+ }
57
+ })
58
+ }
59
+
60
+ private fun observeLiveData () {
61
+ mViewModel.getMovies().observe(this as LifecycleOwner , Observer {
62
+ progressBar.visibility = View .GONE
63
+ homePagedListAdapter.submitList(it)
64
+ })
65
+ }
66
+
67
+ private fun initializeList () {
68
+ recyclerView.adapter = homePagedListAdapter
69
+ }
70
+ }
0 commit comments