Advertisement
rifki_cs29

activity

Apr 5th, 2021
1,125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 4.01 KB | None | 0 0
  1. package com.rifki.kotlin.mygithubapi.view
  2.  
  3. import android.app.SearchManager
  4. import android.content.Context
  5. import android.content.Intent
  6. import androidx.appcompat.app.AppCompatActivity
  7. import android.os.Bundle
  8. import android.view.Menu
  9. import android.view.MenuItem
  10. import android.view.View
  11. import android.widget.Toast
  12. import androidx.appcompat.widget.SearchView
  13. import androidx.lifecycle.Observer
  14. import androidx.lifecycle.ViewModelProvider
  15. import androidx.recyclerview.widget.LinearLayoutManager
  16. import com.rifki.kotlin.mygithubapi.R
  17. import com.rifki.kotlin.mygithubapi.model.GithubUser
  18. import com.rifki.kotlin.mygithubapi.adapter.GithubUserAdapter
  19. import com.rifki.kotlin.mygithubapi.viewModel.MainViewModel
  20. import kotlinx.android.synthetic.main.activity_main.*
  21. import android.provider.Settings
  22.  
  23. class MainActivity : AppCompatActivity() {
  24.     private lateinit var adapter: GithubUserAdapter
  25.     private lateinit var mainViewModel: MainViewModel
  26.  
  27.     override fun onCreate(savedInstanceState: Bundle?) {
  28.         super.onCreate(savedInstanceState)
  29.         setContentView(R.layout.activity_main)
  30.  
  31.         supportActionBar?.setDisplayShowHomeEnabled(true)
  32.         supportActionBar?.setLogo(R.drawable.ic_github_logo)
  33.         supportActionBar?.setDisplayUseLogoEnabled(true)
  34.  
  35.         adapter = GithubUserAdapter()
  36.         adapter.notifyDataSetChanged()
  37.  
  38.         showRecyclerList()
  39.  
  40.         mainViewModel = ViewModelProvider(this, ViewModelProvider.NewInstanceFactory()).get(MainViewModel::class.java)
  41.  
  42.         mainViewModel.getSearchGithubUsers().observe(this, Observer { githubUser ->
  43.             if (githubUser != null) {
  44.                 adapter.setData(githubUser)
  45.                 showLoading(false)
  46.             }
  47.         })
  48.  
  49.         mainViewModel.errorMessage.observe(this, Observer {
  50.             it.getContentIfNotHandled()?.let {
  51.             Toast.makeText(this, it, Toast.LENGTH_LONG).show()
  52.             showLoading(false)
  53.             }
  54.         })
  55.     }
  56.  
  57.     private fun showRecyclerList() {
  58.         rv_github_users.layoutManager = LinearLayoutManager(this)
  59.         rv_github_users.adapter = adapter
  60.  
  61.         adapter.setOnItemClickCallback(object : GithubUserAdapter.OnItemClickCallback{
  62.             override fun onItemClicked(data : GithubUser) {
  63.                 val intent = Intent(this@MainActivity, DetailActivity::class.java)
  64.                 intent.putExtra(DetailActivity.EXTRA_STATE, data)
  65.                 startActivity(intent)
  66.             }
  67.         })
  68.     }
  69.  
  70.     override fun onCreateOptionsMenu(menu: Menu): Boolean {
  71.         val inflater = menuInflater
  72.         inflater.inflate(R.menu.options_menu, menu)
  73.  
  74.         val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager
  75.         val searchView = menu.findItem(R.id.search).actionView as SearchView
  76.  
  77.         searchView.setSearchableInfo(searchManager.getSearchableInfo(componentName))
  78.         searchView.queryHint = resources.getString(R.string.search_hint)
  79.         searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
  80.             override fun onQueryTextSubmit(query: String): Boolean {
  81.                 if (query.isEmpty()) {
  82.                     return true
  83.                 } else {
  84.                     showLoading(true)
  85.                     mainViewModel.setSearchGithubUsers(query)
  86.                 }
  87.                 return true
  88.             }
  89.             override fun onQueryTextChange(newText: String): Boolean {
  90.                 return false
  91.             }
  92.         })
  93.         return true
  94.     }
  95.  
  96.     override fun onOptionsItemSelected(item: MenuItem): Boolean {
  97.         if (item.itemId == R.id.action_change_settings) {
  98.             val mIntent = Intent(Settings.ACTION_LOCALE_SETTINGS)
  99.             startActivity(mIntent)
  100.         }
  101.         return super.onOptionsItemSelected(item)
  102.     }
  103.  
  104.     private fun showLoading(state: Boolean) {
  105.         if (state) {
  106.             progressBar.visibility = View.VISIBLE
  107.         } else {
  108.             progressBar.visibility = View.GONE
  109.         }
  110.     }
  111. }
  112.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement