Mode Malam
| Mode Tampilan
Penulis : admin

Home » Programming » Trik Membuat Base Adapter Untuk Widget RecycleView Di Android
Trik Membuat Base Adapter Untuk Widget RecycleView Di Android

Trik Membuat Base Adapter Untuk Widget RecycleView Di Android


Ketika kita ingin menampilkann sebuah data dalam bentuk List biasanya seorang android programmer akan menggunakan Widget Recycleview di banding Listview karena fleksibilitas dan fitur yang lebih kaya. Namun untuk mengimplementasikan Recycleview kita butuh untuk membuat Adapternya terlebih dahulu pada setiap Recycleview yang kita buat. Ini akan membuat project kita penuh dengan Kelas-Kelas Adapter untuk setiap Recycleview yang ada pada  project android kita. Oleh karena itu, kali ini penulis akan berbagi trik bagaimana cara agar kita hanya perlu membuat satu kelas adapter untuk semua Recyleview yang ada pada project kita. Tapi sebelumnya, penulis anggap para pembaca sekalian sudah tahu cara membuat adapter Rycleview pada umumnya kalau belum tahu, silahkan baca artikel berikut. Oke langsung saja ke tutoralnya disini saya menggunakan AndroidX.

advertisement

  1. Buka project android kalian masing-masing
  2. Buat sebuah Folder package dengan nama Adapter
  3. Buat sebuah kelas kotlin dengan nama BaseViewHolder dan tulis code berikut didalamnya
    class BaseViewHolder(viewHolder: View) : androidx.recyclerview.widget.RecyclerView.ViewHolder(viewHolder) {
        var mCurrentPosition = 0
        fun Bind(position: Int) {
            mCurrentPosition = position
            setItem(position)
        }
        abstract fun setItem(position: Int)
    }

    Penjelasan : Kelas diatas di gunakan untuk membuat ViewHolder yang nantinya akan di gunakan pada class adapter, sebenarnya kita bisa langsung menggunakan class viewholder bawaan dari recycleview, namun disini kita ingin memodifikasi beberapa fungsi dari viewholder. Varible mCurrentPosition tidak kepake ya, so bisa kalian hapus.
  4. Buat sebuah kelas kotlin dengan nama BaseAdapterRecycleView dan tulis code berikut didalamnya.
    abstract class BaseAdapterRecycleView(val list: ArrayList<*>) :
        androidx.recyclerview.widget.RecyclerView.Adapter<BaseViewHolder>() {
    
        override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
            val v = LayoutInflater.from(parent.context).inflate(setItemLayout(), parent, false)
            return ViewHolder(v)
        }
    
        override fun getItemCount(): Int {
            return list.size
        }
    
        override fun onBindViewHolder(p0: BaseViewHolder, p1: Int) {
            p0.Bind(p1)
        }
    
        //----------------------SetUp------------------------------------
        abstract fun setItemLayout(): Int
    
        abstract fun initItemView(itemView: View, item: Any, position: Int)
        //-------------ViewHolder-----------------------
        inner class ViewHolder(itemView: View) : BaseViewHolder(itemView) {
            override fun setItem(position: Int) {
                initItemView(itemView, list[position], position)
            }
        }
    
    }

    Penjelasan : KelasBaseAdapterRecycleView ini sebenernya sama seperti kelas adapter yang digunakan untuk recycleview secara langsung. Namun kita membuatnya sebagai kelas abstract sehingga kelas adapter tersebut tidak dapat langsung digunakan, melainkan herus di inheritance pada kelas turunannya.
  5. Buat sebuah kelas kotlin dengan nama FastRvAdapter dan tulis kode berikut didalamnya.
    class FastRvAdapter(list: ArrayList<*>, var itemLayout: Int) : BaseAdapterRecycleView(list) {
    
        private lateinit var itemview: InitViewInterface
    
        override fun initItemView(itemView: View, item: Any, position: Int) {
            itemview.initItemView(itemView, item, position)
        }
    
        override fun setItemLayout(): Int = itemLayout
    
        fun setItemView(itemview: InitViewInterface) {
            this.itemview = itemview
        }
    
        interface InitViewInterface {
            fun initItemView(itemView: View, item: Any, position: Int)
        }
    }

    Penjelasan: Kelas FastAdapter inilah yang akan kita gunakan untuk mengimplementasikan semua jenis Object ArrayList Data kedalam RecycleView.Base Adapter Recycleview sudah kita buat, Sederhana bukan?

Oke selanjutnya kita masuk ke tahap bagaimana cara menggunakan kelas adapter di atas.

  1. Definisikan kelas FastRvAdapter didalam kelas yang membutuhkan kelas adapter untuk menampilkan data pada Recycleview.
  2. Kemudian buat FastRvAdapter.InitViewInterface, untuk mengisi data pada dan membinding ke item yang ada di RecycleView. Jadi kita tida membinding datanya di dalam adapternya, tapi di kelas Activitynya. 
    override fun onCreate() {
    ...
    val rvAdapter = FastRvAdapter(arrayListData, R.layout.item_list_view)
    rvAdapter.setItemView(object : FastRvAdapter.InitViewInterface {
        override fun initItemView(itemView: View, item: Any, position: Int) {
            item as ProductResponse.Values            
        }
    })
    recycleview.adapter = rvAdapter
    ...
    }
  3. kemudian tinggal kalian isi panggil methode notifyDataSetChanged ketika ada perubahan dapa pada list datanya.

Terimakasih sudah mampir di artikel kali ini. Jangan lupa di share jika kalian merasa artikel ini bermanfaat, kalau ada pertanyaan silahkan tulis di kolom komentar. Untuk projectnya bisa kalian download di link berikut.

>>FastAdapterRecycleView Project<<

Silahkan di pelajari dan kalian boleh memodifikasinya semau kalian.

advertisement

 

 

Tags: #android #kotlin #baseadapter
Bagikan :

Komentar:

Silahkan berkomentar dengan baik dan bijak!

Name * :
Email :
Website :
Comment :


This website uses cookies to ensure you get the best experience on our website

learn more