Advertisement
TiyasAria

MainActivity

Oct 31st, 2021
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 3.02 KB | None | 0 0
  1. package com.tiyas.mygithubapp.ui
  2.  
  3. import android.annotation.SuppressLint
  4. import android.content.Context
  5. import androidx.appcompat.app.AppCompatActivity
  6. import android.os.Bundle
  7. import android.view.View
  8. import android.view.inputmethod.InputMethodManager
  9. import android.widget.SearchView
  10. import androidx.lifecycle.ViewModelProvider
  11. import androidx.recyclerview.widget.LinearLayoutManager
  12. import com.tiyas.mygithubapp.adapter.UserAdapter
  13. import com.tiyas.mygithubapp.data.Users
  14. import com.tiyas.mygithubapp.databinding.ActivityMainBinding
  15. import com.tiyas.mygithubapp.viewModel.MainViewModel
  16.  
  17. class MainActivity : AppCompatActivity() {
  18.  
  19.     private lateinit var  mainBinding : ActivityMainBinding
  20.     private  lateinit var  viewModel : MainViewModel
  21.     private lateinit var  userAdapter : UserAdapter
  22.     private  lateinit var listUser : ArrayList<Users>
  23.  
  24.     @SuppressLint("NotifyDataSetChanged")
  25.     override fun onCreate(savedInstanceState: Bundle?) {
  26.         super.onCreate(savedInstanceState)
  27.         mainBinding = ActivityMainBinding.inflate(layoutInflater)
  28.         setContentView(mainBinding.root)
  29.  
  30.         setUserAdapter()
  31.         showProgressBar(true)
  32.         setViewModel()
  33.  
  34.         mainBinding.searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener{
  35.             override fun onQueryTextSubmit(query : String): Boolean {
  36.                 showProgressBar(true)
  37.                 viewModel.setSearchUsers(this@MainActivity, query)
  38.                 closeKeyboard()
  39.                 return true
  40.             }
  41.  
  42.             override fun onQueryTextChange(newText : String): Boolean {
  43.                 return false
  44.             }
  45.  
  46.         })
  47.     }
  48.  
  49.     private fun closeKeyboard() {
  50.       val view : View? = this.currentFocus
  51.  
  52.         if(view != null ){
  53.             val iMM : InputMethodManager =
  54.                 getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
  55.             iMM.hideSoftInputFromWindow(view.windowToken, 0)
  56.         }
  57.     }
  58.  
  59.     private fun setViewModel() {
  60.         viewModel = ViewModelProvider(this, ViewModelProvider.NewInstanceFactory()).get(
  61.             MainViewModel::class.java
  62.         )
  63.         if(viewModel.getSearchUsers().value == null){
  64.             viewModel.setSearchUsers(this, "")
  65.         }
  66.         viewModel.getSearchUsers().observe(this,{
  67.             users -> if(users != null){
  68.                 listUser = users
  69.             userAdapter.setData(listUser)
  70.             showProgressBar(false)
  71.         }
  72.         } )
  73.     }
  74.  
  75.     private fun showProgressBar(b: Boolean) {
  76.         if (b){
  77.             mainBinding.progressBar.visibility = View.VISIBLE
  78.         } else {
  79.             mainBinding.progressBar.visibility = View.GONE
  80.         }
  81.     }
  82.  
  83.     private fun setUserAdapter() {
  84.         userAdapter = UserAdapter()
  85.         userAdapter.notifyDataSetChanged()
  86.         mainBinding.rvMain.apply {
  87.             setHasFixedSize(true)
  88.             adapter = userAdapter
  89.             layoutManager = LinearLayoutManager(this@MainActivity)
  90.         }
  91.  
  92.     }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement