rifki_cs29

Adapter

Apr 5th, 2021
308
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 2.13 KB | None | 0 0
  1. package com.rifki.kotlin.mygithubapi.adapter
  2.  
  3. import android.view.LayoutInflater
  4. import android.view.View
  5. import android.view.ViewGroup
  6. import androidx.recyclerview.widget.RecyclerView
  7. import com.bumptech.glide.Glide
  8. import com.bumptech.glide.request.RequestOptions
  9. import com.rifki.kotlin.mygithubapi.R
  10. import com.rifki.kotlin.mygithubapi.model.GithubUser
  11. import kotlinx.android.synthetic.main.item_row_github_user.view.*
  12.  
  13.  
  14. class GithubUserAdapter : RecyclerView.Adapter<GithubUserAdapter.GithubViewHolder>() {
  15.     private val listGithubUser = ArrayList<GithubUser>()
  16.     private lateinit var onItemClickCallback: OnItemClickCallback
  17.  
  18.     fun setData(items: ArrayList<GithubUser>) {
  19.         listGithubUser.clear()
  20.         listGithubUser.addAll(items)
  21.         notifyDataSetChanged()
  22.     }
  23.  
  24.     override fun onCreateViewHolder(viewGroup : ViewGroup, viewType: Int): GithubViewHolder {
  25.         val view = LayoutInflater.from(viewGroup.context).inflate(R.layout.item_row_github_user, viewGroup, false)
  26.         return GithubViewHolder(view)
  27.     }
  28.  
  29.     override fun getItemCount(): Int = listGithubUser.size
  30.  
  31.     override fun onBindViewHolder(holder: GithubViewHolder, position: Int) {
  32.         holder.bind(listGithubUser[position])
  33.     }
  34.  
  35.     inner class GithubViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
  36.         fun bind(githubUser: GithubUser){
  37.             with(itemView){
  38.                 Glide.with(itemView.context)
  39.                     .load(githubUser.avatar)
  40.                     .apply(RequestOptions().override(250, 250))
  41.                     .into(image_avatar)
  42.                 tv_username.text = githubUser.username
  43.                 tv_link.text = githubUser.url
  44.                 //tv_name.text = githubUser.name
  45.                 itemView.setOnClickListener {
  46.                     onItemClickCallback.onItemClicked(githubUser)
  47.                 }
  48.             }
  49.         }
  50.     }
  51.  
  52.     fun setOnItemClickCallback(onItemClickCallback: OnItemClickCallback) {
  53.         this.onItemClickCallback = onItemClickCallback
  54.     }
  55.  
  56.     interface OnItemClickCallback {
  57.         fun onItemClicked(data: GithubUser)
  58.     }
  59. }
Add Comment
Please, Sign In to add comment