Advertisement
nurrohim11

Untitled

Sep 18th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 4.29 KB | None | 0 0
  1. package com.dicoding.kotlinacademy.fragment
  2.  
  3. import android.content.Context
  4. import android.os.Bundle
  5. import android.support.v4.app.Fragment
  6. import android.support.v4.widget.SwipeRefreshLayout
  7. import android.support.v7.widget.LinearLayoutManager
  8. import android.support.v7.widget.RecyclerView
  9. import android.view.LayoutInflater
  10. import android.view.View
  11. import android.view.ViewGroup
  12. import android.widget.*
  13. import com.dicoding.kotlinacademy.R
  14.  
  15. import com.dicoding.kotlinacademy.R.array.league
  16. import com.dicoding.kotlinacademy.R.color.colorAccent
  17. import com.dicoding.kotlinacademy.TeamDetailActivity
  18. import com.dicoding.kotlinacademy.api.ApiRepository
  19. import com.dicoding.kotlinacademy.model.Team
  20. import com.dicoding.kotlinacademy.util.invisible
  21. import com.dicoding.kotlinacademy.util.visible
  22. import com.google.gson.Gson
  23. import org.jetbrains.anko.*
  24. import org.jetbrains.anko.recyclerview.v7.recyclerView
  25. import org.jetbrains.anko.support.v4.ctx
  26. import org.jetbrains.anko.support.v4.onRefresh
  27. import org.jetbrains.anko.support.v4.swipeRefreshLayout
  28.  
  29. class TeamsFragment : Fragment(), AnkoComponent<Context>, TeamsView {
  30.     private var teams: MutableList<Team> = mutableListOf()
  31.     private lateinit var presenter: TeamsPresenter
  32.     private lateinit var adapter: TeamsAdapter
  33.     private lateinit var spinner: Spinner
  34.     private lateinit var listEvent: RecyclerView
  35.     private lateinit var progressBar: ProgressBar
  36.     private lateinit var swipeRefresh: SwipeRefreshLayout
  37.     private lateinit var leagueName: String
  38.  
  39.     override fun onActivityCreated(savedInstanceState: Bundle?) {
  40.         super.onActivityCreated(savedInstanceState)
  41.         val spinnerItems = resources.getStringArray(league)
  42.         val spinnerAdapter = ArrayAdapter(ctx, android.R.layout.simple_spinner_dropdown_item, spinnerItems)
  43.         spinner.adapter = spinnerAdapter
  44.  
  45.         adapter = TeamsAdapter(teams){
  46.             ctx.startActivity<TeamDetailActivity>("id" to "${it.teamId}")
  47.         }
  48.         listEvent.adapter = adapter
  49.         val request = ApiRepository()
  50.         val gson = Gson()
  51.         presenter = TeamsPresenter(this, request, gson)
  52.         spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
  53.             override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) {
  54.                 leagueName = spinner.selectedItem.toString()
  55.                 presenter.getTeamList(leagueName)
  56.             }
  57.  
  58.             override fun onNothingSelected(parent: AdapterView<*>) {}
  59.         }
  60.  
  61.         swipeRefresh.onRefresh {
  62.             presenter.getTeamList(leagueName)
  63.         }
  64.     }
  65.  
  66.     override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
  67.                               savedInstanceState: Bundle?): View? {
  68.         // Inflate the layout for this fragment
  69.         return createView(AnkoContext.create(ctx))
  70.  
  71.     }
  72.     override fun createView(ui: AnkoContext<Context>): View = with(ui){
  73.         linearLayout {
  74.             lparams (width = matchParent, height = wrapContent)
  75.             orientation = LinearLayout.VERTICAL
  76.             topPadding = dip(16)
  77.             leftPadding = dip(16)
  78.             rightPadding = dip(16)
  79.  
  80.             spinner = spinner {id = R.id.spinner}
  81.             swipeRefresh = swipeRefreshLayout {
  82.                 setColorSchemeResources(colorAccent,
  83.                         android.R.color.holo_green_light,
  84.                         android.R.color.holo_orange_light,
  85.                         android.R.color.holo_red_light)
  86.  
  87.                 relativeLayout{
  88.                     lparams (width = matchParent, height = wrapContent)
  89.  
  90.                     listEvent = recyclerView {
  91.                         id = R.id.list_team
  92.                         lparams (width = matchParent, height = wrapContent)
  93.                         layoutManager = LinearLayoutManager(ctx)
  94.                     }
  95.  
  96.                     progressBar = progressBar {
  97.                     }.lparams{
  98.                         centerHorizontally()
  99.                     }
  100.                 }
  101.             }
  102.         }
  103.     }
  104.  
  105.     override fun showLoading() {
  106.         progressBar.visible()
  107.     }
  108.  
  109.     override fun hideLoading() {
  110.         progressBar.invisible()
  111.     }
  112.  
  113.     override fun showTeamList(data: List<Team>) {
  114.         swipeRefresh.isRefreshing = false
  115.         teams.clear()
  116.         teams.addAll(data)
  117.         adapter.notifyDataSetChanged()
  118.     }
  119.  
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement