Advertisement
Guest User

Mainactivity

a guest
Mar 31st, 2020
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 9.89 KB | None | 0 0
  1. package com.bapercoding.simplecrud.activity
  2.  
  3. import android.app.AlertDialog
  4. import android.app.ProgressDialog
  5. import android.app.SearchManager
  6. import android.content.Context
  7. import android.content.Intent
  8. import android.support.v7.app.AppCompatActivity
  9. import android.os.Bundle
  10. import android.os.Handler
  11. import android.support.v4.app.Fragment
  12. import android.support.v7.widget.LinearLayoutManager
  13. import android.util.Log
  14. import android.view.LayoutInflater
  15. import android.view.Menu
  16. import android.view.View
  17. import android.view.ViewGroup
  18. import android.widget.SearchView
  19. import android.widget.Toast
  20. import com.bapercoding.simplecrud.*
  21. import com.bapercoding.simplecrud.adapter.RVAAdapterStudent
  22. import com.bapercoding.simplecrud.model.DataResponse
  23. import com.bapercoding.simplecrud.model.Kumpulan_value
  24. import com.bapercoding.simplecrud.model.Mahasiswa
  25. import com.bapercoding.simplecrud.utilities.ApiClient
  26. import com.bapercoding.simplecrud.utilities.LoginSharedPreference
  27. import com.bapercoding.simplecrud.utilities.showMessage
  28. import kotlinx.android.synthetic.main.activity_main.*
  29. import retrofit2.Call
  30. import retrofit2.Callback
  31. import retrofit2.Response
  32.  
  33. class MainActivity : AppCompatActivity(), Fragment() {
  34.  
  35.     private var doubleBackToExitPressedOnce = false
  36.  
  37.     // initialisasi api interface dari object api di folder utilities
  38.     private val apiInterface by lazy {
  39.         ApiClient.getClient().create(ApiClient.ApiInterface::class.java)
  40.     }
  41.  
  42.     private val loginSharedPreference by lazy {
  43.         LoginSharedPreference(this@MainActivity)
  44.     }
  45.  
  46.     private val mahasiswa = mutableListOf<Kumpulan_value>()
  47.  
  48.     override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
  49.                               savedInstanceState: Bundle?): View? {
  50.         // Inflate the layout for this fragment
  51.         return inflater.inflate(R.layout.activity_main, container, false)
  52.     }
  53.  
  54.     companion object {
  55.         fun newInstance(): MainActivity{
  56.             val fragment = MainActivity()
  57.             val args = Bundle()
  58.             fragment.arguments = args
  59.             return fragment
  60.         }
  61.     }
  62.  
  63.  
  64.     override fun onCreate(savedInstanceState: Bundle?) {
  65.         super.onCreate(savedInstanceState)
  66.         //sesuaikan aktivity mana yang mau di tampilkan
  67.         setContentView(R.layout.activity_main)
  68.  
  69.         //membuat judul pada actionbar
  70.         supportActionBar?.title = "Data Mahasiswa"
  71.  
  72.         mRecyclerView.setHasFixedSize(true)
  73.         mRecyclerView.layoutManager = LinearLayoutManager(this)
  74.  
  75.         mFloatingActionButton.setOnClickListener {
  76.             startActivity(Intent(this, ManageStudentActivity::class.java))
  77.         }
  78.  
  79.         // refresh data
  80.         swipe_refresh_main.setColorSchemeResources(R.color.colorAccent, R.color.colorPrimary)
  81.         swipe_refresh_main.setOnRefreshListener {
  82.             // handler ini berfungsi untuk menunggu thread selesai
  83.             Handler().postDelayed({
  84.                 // runOnUiThread befungsi untuk mengizinkan background thread mengakses tampilan
  85.                 runOnUiThread {
  86.                     swipe_refresh_main.isRefreshing = false
  87.                     loadAllStudents()
  88.                 }
  89.             }, 1000) // delay dilakukan selama 1000 milidetik atau 1 detik
  90.         }
  91.         loadAllStudents()
  92.     }
  93.  
  94.     override fun onResume() {
  95.         super.onResume()
  96.         loadAllStudents()
  97.     }
  98.  
  99.     override fun onCreateOptionsMenu(menu: Menu?): Boolean {
  100.         val menuInflater = menuInflater
  101.         menuInflater.inflate(R.menu.action_menu, menu)
  102.  
  103.         val searchItem = menu?.findItem(R.id.action_search)
  104.         val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager
  105.         val searchView: SearchView? = searchItem?.actionView as SearchView
  106.  
  107.         if (searchView != null) {
  108.             // event untuk mencari data
  109.             searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
  110.                 // event dijalankan ketika icon diklik
  111.                 override fun onQueryTextSubmit(query: String?): Boolean {
  112.                     return search(query)
  113.                 }
  114.  
  115.                 // event dijalankan ketika text berubah
  116.                 override fun onQueryTextChange(query: String?): Boolean {
  117.                     return search(query)
  118.                 }
  119.             })
  120.  
  121.             searchView.setSearchableInfo(searchManager.getSearchableInfo(componentName))
  122.         }
  123.         return super.onCreateOptionsMenu(menu)
  124.     }
  125.  
  126.     // fungsi untuk mencari data di search view
  127.     private fun search(query: String?): Boolean {
  128.         val newMahasiswa = mutableListOf<Kumpulan_value>()
  129.         newMahasiswa.addAll(mahasiswa.filter {
  130.             it.nm!!.toLowerCase().contains(query!!.toLowerCase()) ||
  131.                     it.nim!!.contains(query)
  132.         })
  133.  
  134.         // tampilkan ke recycler view
  135.         val adapter = RVAAdapterStudent(applicationContext, newMahasiswa)
  136.         mRecyclerView.adapter = adapter
  137.         return true
  138.     }
  139.  
  140.     private fun loadAllStudents() {
  141.         // menghapus data mahasiswa
  142.  
  143.  
  144.         //membuat loading
  145.         val loading = ProgressDialog(this)
  146.         loading.setMessage("Memuat data...")
  147.         loading.show()
  148.  
  149.         // membuat fungsi untuk mengambil data dari server
  150.         val getMahasiswa = apiInterface.getMahasiswa()
  151.         getMahasiswa.enqueue(object : Callback<DataResponse<List<Kumpulan_value>>> {
  152.             // jika proses gagal
  153.             override fun onFailure(call: Call<DataResponse<List<Kumpulan_value>>>, t: Throwable) {
  154.                 showMessage(t.message.toString(), "Error", this@MainActivity)
  155.                 loading.dismiss()
  156.             }
  157.  
  158.             // jika proses berhasil
  159.             override fun onResponse(call: Call<DataResponse<List<Kumpulan_value>>>, response: Response<DataResponse<List<Kumpulan_value>>>) {
  160.                 // jika respon == 200 (berhasil)
  161.                 if (response.isSuccessful) {
  162.                     if (response.body() != null && response.body()?.data != null) {
  163.                         Log.e("test", response.body()?.data.toString())
  164.                         // membinding data ke recycler view
  165.                         mahasiswa.clear()
  166.                         mahasiswa.addAll(response.body()?.data!!)
  167.                         val adapter = RVAAdapterStudent(applicationContext, response.body()?.data!!)
  168.                         mRecyclerView.adapter = adapter
  169.                     } else {
  170.                         // jika data mahasiswa tidak ditemukan
  171.                         showMessage("Data mahasiswa kosong", "Warning", this@MainActivity)
  172.                     }
  173.                 } else {
  174.                     // jika respone != 200 (gagal)
  175.                     showMessage(response.message(), "Error", this@MainActivity)
  176.                 }
  177.                 loading.dismiss()
  178.             }
  179.  
  180.         })
  181. //
  182. //        //memanggil JSON
  183. //        AndroidNetworking.get(ApiEndPoint.mahasiswa_tampil)
  184. //                .setPriority(Priority.MEDIUM)
  185. //                .build()
  186. //                .getAsJSONObject(object : JSONObjectRequestListener {
  187. //
  188. //                    override fun onResponse(response: JSONObject?) {
  189. //
  190. //                        arrayList.clear()
  191. //
  192. //                        val jsonArray = response?.optJSONArray("result")
  193. //
  194. //                        //untuk pemberitahuan jika data koosng
  195. //                        if (jsonArray?.length() == 0) {
  196. //                            loading.dismiss()
  197. //                            Toast.makeText(applicationContext, "Student data is empty, Add the data first", Toast.LENGTH_SHORT).show()
  198. //                        }
  199. //                        //untuk pemberitahuan jika data koosng
  200. //
  201. //                        for (i in 0 until jsonArray?.length()!!) {
  202. //
  203. //                            val jsonObject = jsonArray?.optJSONObject(i)
  204. //                            //menambahkan pada cardview dengan add value
  205. //                            arrayList.add(Kumpulan_value(jsonObject.getString("nim"),
  206. //                                    jsonObject.getString("nm")))
  207. //
  208. //                            if (jsonArray?.length() - 1 == i) {
  209. //
  210. //                                loading.dismiss()
  211. //                                val adapter = RVAAdapterStudent(applicationContext, arrayList)
  212. //                                adapter.notifyDataSetChanged()
  213. //                                mRecyclerView.adapter = adapter
  214. //                                //menambahkan pada cardview
  215. //
  216. //                            }
  217. //
  218. //                        }
  219. //
  220. //                    }
  221. //
  222. //                    //jika data tidak tersedia
  223. //                    override fun onError(anError: ANError?) {
  224. //                        loading.dismiss()
  225. //                        Log.d("ONERROR", anError?.errorDetail?.toString())
  226. //                        Toast.makeText(applicationContext, "Connection Failure", Toast.LENGTH_SHORT).show()
  227. //                    }
  228. //                })
  229.  
  230.  
  231.     }
  232.  
  233.     override fun onBackPressed() {
  234. //        if (doubleBackToExitPressedOnce) {
  235. //            super.onBackPressed()
  236. //            return
  237. //        }
  238. //
  239. //        this.doubleBackToExitPressedOnce = true
  240. //        Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show()
  241. //
  242. //        Handler().postDelayed(Runnable { doubleBackToExitPressedOnce = false }, 2000)
  243.         AlertDialog
  244.                 .Builder(this@MainActivity)
  245.                 .setTitle("Logout")
  246.                 .setMessage("Are you sure?")
  247.                 .setPositiveButton("Yes") {_,_ ->
  248.                     loginSharedPreference.saveMahasiswa(null)
  249.                     val intent = Intent(this@MainActivity, LoginActivity::class.java)
  250.                     startActivity(intent)
  251.                     finish()
  252.                 }
  253.                 .setNegativeButton("No") {_,_ -> }
  254.                 .show()
  255.     }
  256.  
  257.  
  258. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement