Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.bapercoding.simplecrud.activity
- import android.app.AlertDialog
- import android.app.ProgressDialog
- import android.app.SearchManager
- import android.content.Context
- import android.content.Intent
- import android.support.v7.app.AppCompatActivity
- import android.os.Bundle
- import android.os.Handler
- import android.support.v4.app.Fragment
- import android.support.v7.widget.LinearLayoutManager
- import android.util.Log
- import android.view.LayoutInflater
- import android.view.Menu
- import android.view.View
- import android.view.ViewGroup
- import android.widget.SearchView
- import android.widget.Toast
- import com.bapercoding.simplecrud.*
- import com.bapercoding.simplecrud.adapter.RVAAdapterStudent
- import com.bapercoding.simplecrud.model.DataResponse
- import com.bapercoding.simplecrud.model.Kumpulan_value
- import com.bapercoding.simplecrud.model.Mahasiswa
- import com.bapercoding.simplecrud.utilities.ApiClient
- import com.bapercoding.simplecrud.utilities.LoginSharedPreference
- import com.bapercoding.simplecrud.utilities.showMessage
- import kotlinx.android.synthetic.main.activity_main.*
- import retrofit2.Call
- import retrofit2.Callback
- import retrofit2.Response
- class MainActivity : AppCompatActivity(), Fragment() {
- private var doubleBackToExitPressedOnce = false
- // initialisasi api interface dari object api di folder utilities
- private val apiInterface by lazy {
- ApiClient.getClient().create(ApiClient.ApiInterface::class.java)
- }
- private val loginSharedPreference by lazy {
- LoginSharedPreference(this@MainActivity)
- }
- private val mahasiswa = mutableListOf<Kumpulan_value>()
- override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
- savedInstanceState: Bundle?): View? {
- // Inflate the layout for this fragment
- return inflater.inflate(R.layout.activity_main, container, false)
- }
- companion object {
- fun newInstance(): MainActivity{
- val fragment = MainActivity()
- val args = Bundle()
- fragment.arguments = args
- return fragment
- }
- }
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- //sesuaikan aktivity mana yang mau di tampilkan
- setContentView(R.layout.activity_main)
- //membuat judul pada actionbar
- supportActionBar?.title = "Data Mahasiswa"
- mRecyclerView.setHasFixedSize(true)
- mRecyclerView.layoutManager = LinearLayoutManager(this)
- mFloatingActionButton.setOnClickListener {
- startActivity(Intent(this, ManageStudentActivity::class.java))
- }
- // refresh data
- swipe_refresh_main.setColorSchemeResources(R.color.colorAccent, R.color.colorPrimary)
- swipe_refresh_main.setOnRefreshListener {
- // handler ini berfungsi untuk menunggu thread selesai
- Handler().postDelayed({
- // runOnUiThread befungsi untuk mengizinkan background thread mengakses tampilan
- runOnUiThread {
- swipe_refresh_main.isRefreshing = false
- loadAllStudents()
- }
- }, 1000) // delay dilakukan selama 1000 milidetik atau 1 detik
- }
- loadAllStudents()
- }
- override fun onResume() {
- super.onResume()
- loadAllStudents()
- }
- override fun onCreateOptionsMenu(menu: Menu?): Boolean {
- val menuInflater = menuInflater
- menuInflater.inflate(R.menu.action_menu, menu)
- val searchItem = menu?.findItem(R.id.action_search)
- val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager
- val searchView: SearchView? = searchItem?.actionView as SearchView
- if (searchView != null) {
- // event untuk mencari data
- searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
- // event dijalankan ketika icon diklik
- override fun onQueryTextSubmit(query: String?): Boolean {
- return search(query)
- }
- // event dijalankan ketika text berubah
- override fun onQueryTextChange(query: String?): Boolean {
- return search(query)
- }
- })
- searchView.setSearchableInfo(searchManager.getSearchableInfo(componentName))
- }
- return super.onCreateOptionsMenu(menu)
- }
- // fungsi untuk mencari data di search view
- private fun search(query: String?): Boolean {
- val newMahasiswa = mutableListOf<Kumpulan_value>()
- newMahasiswa.addAll(mahasiswa.filter {
- it.nm!!.toLowerCase().contains(query!!.toLowerCase()) ||
- it.nim!!.contains(query)
- })
- // tampilkan ke recycler view
- val adapter = RVAAdapterStudent(applicationContext, newMahasiswa)
- mRecyclerView.adapter = adapter
- return true
- }
- private fun loadAllStudents() {
- // menghapus data mahasiswa
- //membuat loading
- val loading = ProgressDialog(this)
- loading.setMessage("Memuat data...")
- loading.show()
- // membuat fungsi untuk mengambil data dari server
- val getMahasiswa = apiInterface.getMahasiswa()
- getMahasiswa.enqueue(object : Callback<DataResponse<List<Kumpulan_value>>> {
- // jika proses gagal
- override fun onFailure(call: Call<DataResponse<List<Kumpulan_value>>>, t: Throwable) {
- showMessage(t.message.toString(), "Error", this@MainActivity)
- loading.dismiss()
- }
- // jika proses berhasil
- override fun onResponse(call: Call<DataResponse<List<Kumpulan_value>>>, response: Response<DataResponse<List<Kumpulan_value>>>) {
- // jika respon == 200 (berhasil)
- if (response.isSuccessful) {
- if (response.body() != null && response.body()?.data != null) {
- Log.e("test", response.body()?.data.toString())
- // membinding data ke recycler view
- mahasiswa.clear()
- mahasiswa.addAll(response.body()?.data!!)
- val adapter = RVAAdapterStudent(applicationContext, response.body()?.data!!)
- mRecyclerView.adapter = adapter
- } else {
- // jika data mahasiswa tidak ditemukan
- showMessage("Data mahasiswa kosong", "Warning", this@MainActivity)
- }
- } else {
- // jika respone != 200 (gagal)
- showMessage(response.message(), "Error", this@MainActivity)
- }
- loading.dismiss()
- }
- })
- //
- // //memanggil JSON
- // AndroidNetworking.get(ApiEndPoint.mahasiswa_tampil)
- // .setPriority(Priority.MEDIUM)
- // .build()
- // .getAsJSONObject(object : JSONObjectRequestListener {
- //
- // override fun onResponse(response: JSONObject?) {
- //
- // arrayList.clear()
- //
- // val jsonArray = response?.optJSONArray("result")
- //
- // //untuk pemberitahuan jika data koosng
- // if (jsonArray?.length() == 0) {
- // loading.dismiss()
- // Toast.makeText(applicationContext, "Student data is empty, Add the data first", Toast.LENGTH_SHORT).show()
- // }
- // //untuk pemberitahuan jika data koosng
- //
- // for (i in 0 until jsonArray?.length()!!) {
- //
- // val jsonObject = jsonArray?.optJSONObject(i)
- // //menambahkan pada cardview dengan add value
- // arrayList.add(Kumpulan_value(jsonObject.getString("nim"),
- // jsonObject.getString("nm")))
- //
- // if (jsonArray?.length() - 1 == i) {
- //
- // loading.dismiss()
- // val adapter = RVAAdapterStudent(applicationContext, arrayList)
- // adapter.notifyDataSetChanged()
- // mRecyclerView.adapter = adapter
- // //menambahkan pada cardview
- //
- // }
- //
- // }
- //
- // }
- //
- // //jika data tidak tersedia
- // override fun onError(anError: ANError?) {
- // loading.dismiss()
- // Log.d("ONERROR", anError?.errorDetail?.toString())
- // Toast.makeText(applicationContext, "Connection Failure", Toast.LENGTH_SHORT).show()
- // }
- // })
- }
- override fun onBackPressed() {
- // if (doubleBackToExitPressedOnce) {
- // super.onBackPressed()
- // return
- // }
- //
- // this.doubleBackToExitPressedOnce = true
- // Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show()
- //
- // Handler().postDelayed(Runnable { doubleBackToExitPressedOnce = false }, 2000)
- AlertDialog
- .Builder(this@MainActivity)
- .setTitle("Logout")
- .setMessage("Are you sure?")
- .setPositiveButton("Yes") {_,_ ->
- loginSharedPreference.saveMahasiswa(null)
- val intent = Intent(this@MainActivity, LoginActivity::class.java)
- startActivity(intent)
- finish()
- }
- .setNegativeButton("No") {_,_ -> }
- .show()
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement