Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.rifki.kotlin.mygithubapi.view
- import android.app.SearchManager
- import android.content.Context
- import android.content.Intent
- import androidx.appcompat.app.AppCompatActivity
- import android.os.Bundle
- import android.view.Menu
- import android.view.MenuItem
- import android.view.View
- import android.widget.Toast
- import androidx.appcompat.widget.SearchView
- import androidx.lifecycle.Observer
- import androidx.lifecycle.ViewModelProvider
- import androidx.recyclerview.widget.LinearLayoutManager
- import com.rifki.kotlin.mygithubapi.R
- import com.rifki.kotlin.mygithubapi.model.GithubUser
- import com.rifki.kotlin.mygithubapi.adapter.GithubUserAdapter
- import com.rifki.kotlin.mygithubapi.viewModel.MainViewModel
- import kotlinx.android.synthetic.main.activity_main.*
- import android.provider.Settings
- class MainActivity : AppCompatActivity() {
- private lateinit var adapter: GithubUserAdapter
- private lateinit var mainViewModel: MainViewModel
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_main)
- supportActionBar?.setDisplayShowHomeEnabled(true)
- supportActionBar?.setLogo(R.drawable.ic_github_logo)
- supportActionBar?.setDisplayUseLogoEnabled(true)
- adapter = GithubUserAdapter()
- adapter.notifyDataSetChanged()
- showRecyclerList()
- mainViewModel = ViewModelProvider(this, ViewModelProvider.NewInstanceFactory()).get(MainViewModel::class.java)
- mainViewModel.getSearchGithubUsers().observe(this, Observer { githubUser ->
- if (githubUser != null) {
- adapter.setData(githubUser)
- showLoading(false)
- }
- })
- mainViewModel.errorMessage.observe(this, Observer {
- it.getContentIfNotHandled()?.let {
- Toast.makeText(this, it, Toast.LENGTH_LONG).show()
- showLoading(false)
- }
- })
- }
- private fun showRecyclerList() {
- rv_github_users.layoutManager = LinearLayoutManager(this)
- rv_github_users.adapter = adapter
- adapter.setOnItemClickCallback(object : GithubUserAdapter.OnItemClickCallback{
- override fun onItemClicked(data : GithubUser) {
- val intent = Intent(this@MainActivity, DetailActivity::class.java)
- intent.putExtra(DetailActivity.EXTRA_STATE, data)
- startActivity(intent)
- }
- })
- }
- override fun onCreateOptionsMenu(menu: Menu): Boolean {
- val inflater = menuInflater
- inflater.inflate(R.menu.options_menu, menu)
- val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager
- val searchView = menu.findItem(R.id.search).actionView as SearchView
- searchView.setSearchableInfo(searchManager.getSearchableInfo(componentName))
- searchView.queryHint = resources.getString(R.string.search_hint)
- searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
- override fun onQueryTextSubmit(query: String): Boolean {
- if (query.isEmpty()) {
- return true
- } else {
- showLoading(true)
- mainViewModel.setSearchGithubUsers(query)
- }
- return true
- }
- override fun onQueryTextChange(newText: String): Boolean {
- return false
- }
- })
- return true
- }
- override fun onOptionsItemSelected(item: MenuItem): Boolean {
- if (item.itemId == R.id.action_change_settings) {
- val mIntent = Intent(Settings.ACTION_LOCALE_SETTINGS)
- startActivity(mIntent)
- }
- return super.onOptionsItemSelected(item)
- }
- private fun showLoading(state: Boolean) {
- if (state) {
- progressBar.visibility = View.VISIBLE
- } else {
- progressBar.visibility = View.GONE
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement