Tutorial Menggunakan RecyclerView dan Adapter di Kotlin | PART 1

Baringin
By -
0

 Pendahuluan

    Bertemu lagi kita di blog yang membahas tentang teknologi informasi dan pemrograman komputer. kali ini kita akan membahas tentang satu komponen di anroid studio, yaitunya RecyclerView. Komponene ini merupa pengembangan dari ListView. Artinya dengan menggunakan komponen ini kita bisa merancang tampilan android dalam bentuk list.

    RecyclerView sendiri merupakan pengembangan dari ListView yang lebih di sederhanakan guna menjawab permasalahan yang timbul di ListView. Jika pada listView semua data akan ditampilkan, berbeda pada RecyclerView. Hanya dua data sebelum dan dua data sesudah yang di tampilkan pada layout sehingga membuat proses pada tampilan android lebih mudah. Perhatikan Gambarnya:


    Berdasarkan skema pada gambar dapat di lihat bahwa ListView meload semua data, sedangkan recyclerView hanya meload sebagian data saja. Jika data yang di load kecil maka tidak akan nampak perbedaannya, namun hl  ini sangat berguna sekali jika data kita sangat besar. RecyclerView akan terasa lebih ringan di smparphone.

    Konsep membuat RecicylerView dapat dilihat pada skema berikut


    Untuk membuat RecyclerView kita membutuhkan beberapa langkah. Seperti membuat Adapter,LayoutManajer kemudian ViewHolder dan Data Class. Nah, agar lebih mudah memahami kita akan membuat sebuah studi kasus projek tentang "DAFTAR BUKU".  Mari kita Mulai
    Oke mari kita coba satu persatu:

Persiapan

    Jalankan Android Studio anda dan buatlah sebuah projek baru dengan ketetapan seperti berikut:

    Template           : Empty Views Activaty

    Nama projek     :Buku

    Language           :Kotlin

    Setelah persiapan selesai, saatnya kita masuk ke tahapan berikutnya.


Konfigurasi:

     Sebelum kita memulai membuat projek android dengan metode recyclerView, terlebih dahulu kita tambahkan sebaris perintah. Perintah tersebut di tulis di buidl.gradle(module:app). Buka root Gradle Scripts dan tambahakn  perintahnya:

plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("kotlin-parcelize") => Tambahkan baris perintah ini
}

    Setelah  itu lakukan synron dengan mengklik sync Now yang terdapat pada bagian atas halaman utama. Tunggu beberapa saat hingga library selesai didownload. Pastikan anda terkoneksi ke internet. Baris perintah diatas berfungsi agar semua propertis di serialisasikan dalam bentuk konstructor nantinya. Karena data akan kita letakkan pada file string.xml

    Sekarang buka layout activity_main.xml dan tambahkan komponen recyclerView di dalamnya. Komponen ini berguna sebagai list dari item-item yang akan dikirim nantinya. Dan kita bisa tambahkan sebuah komponen TextView sebagai judul/Title. Sedangkaan layout kita rubah dengan menggunakan  LinearLayout. Perhatikan script seperti berikut ini:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_margin="10dp"
tools:context=".MainActivity">

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="DAFTAR BUKU"
android:textAlignment="center"
android:padding="15dp"
android:textSize="18dp"/>

<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_buku"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>


      NB:  Anda dapat memodivikasi tampilan sesuai dengan keinginan anda.

    Nah sampai disini kita telah selesai membuat halaman utama dari projek kita. Selanjutnya kita akan membuat disain list buku.

Membuat List Item/Buku

    List Item/Buku yang dimaksud disini adalah desain tampilan dari list yang akan di tampilkan pada activity_main.xml. Kita perlu membuat sebuah file layout satu buah. Masih pada root App=> Res=>Layout, klik kanan pada folder Layout, pilih New dan pilih Layout Resource File.  Beri nama layout tersebut dengan nama  "list_buku" dan klik OK.

    Selanjutnya pada halaman list_buku.xml tulislah script berikut:

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/cv_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
app:cardBackgroundColor="#f7f8f3"
app:cardCornerRadius="10dp"
app:cardElevation="5dp">

<TextView
android:id="@+id/tv_judul"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Judul Buku"
android:textSize="18dp"
android:padding="15dp"/>

</androidx.cardview.widget.CardView>

    Desain layout untuk list buku kita buat menggunakan cardView. Kita gunakan sebuah TextView dengan ID tv_judul. Id ini nanti akan di panggil jadi pastikan anda mengingat id dari textview tersebut.


Membuat Data Array Pada String.xml

    Data buku akan kita letakkan pada file string.xml. File ini nanti akan kita akses.   File ini terletak pada root App=>Res=>values=>String.xml. Silahkan anda buka file tersebut. Kita akan melakukan penambahan item pada file tersebut.

<resources>
<string name="app_name">RecyclerView</string>
<string-array name="data_judul">
<item>Dasar-Dasar Android</item>
<item>Memahami Kotlin Dalam 10 Hari</item>
<item>Kotlin Vs Java</item>
</string-array>
</resources>

    

    Perhatikan kita memiliki data array dengan nama data_judul yang mana di dalamnya terdapat 3 buah item. Nama string ini nanti akan kita panggil kembali.


Membuat Data Class

    Data Class merupakan kumpulan variabel yang akan di panggil oleh adapter nantinya. Karena disini kita hanya memiliki 1 variable, yaitu title maka di data class kita akan membuat 1 variabel dengan nama title.

    Masuk ke root App=>Java=>com.example.recyclerView. Klik kanan dan pilih New. Kemudian pilih Kotlin Class/File. Isi Name dengan nama "DataItem". Kemudian klik Data Class.



     Nah pada DataItem.kt ketikkan perintah berikut:

package com.example.buku

import android.os.Parcelable
import kotlinx.parcelize.Parcelize

@Parcelize
data class DataItem(
val judul: String
): Parcelable


    Selanjutnya lakukan langkah yang sama. Pilih  root App=>Java=>com.example.recyclerView. Klik kanan dan pilih New. Kemudian pilih Kotlin Class/File. Isi Name dengan nama "ItemAdapter". Kemudian klik Class.


        Lengkapi kode ItemAdapter seperti berikut:

class ItemAdapter(
private val listBuku : ArrayList<DataItem>
) : RecyclerView.Adapter<ItemAdapter.
listViewHolder>()

     Terdapat Error  pada ItemAdapter dan ListViewHolderBukan. Jangan khawatir, kita akan memperbaikinya.  

    Pertama-tama kita perbaiki dulu listViewHolder. Perintah ini error karena kita belum membuat class. Jadi cara membuatnya letakkan cursor (Tampa di klik) pada "ListViewHolder" hingga muncul librarynya. Pilih Create Class ListViewHolder. Jika Muncul ItemAdapter klik saja. Nanti akan dibuat class baru di dalam class ItemAdapter. Dan tambahkan perintah view dan RecylerView.viewHolder(view) pada class tersebut. Perhatikan script nya:

class ItemAdapter(
private val listBuku : ArrayList<DataItem>
) : RecyclerView.Adapter<ItemAdapter.listViewHolder>() {
class listViewHolder: RecyclerView.ViewHolder() {

}
}

    

     Masih Error juaga?. Klik RecyclerView.ViewHolder atau anda dapat menggunakan kombinasi ALT + ENTER. pilih Add Constructor Parameters Form ViewHolder(View) sehingga Script berubah seperti berikut:

import android.view.View
import androidx.recyclerview.widget.RecyclerView

class ItemAdapter(
private val listBuku : ArrayList<DataItem>
) : RecyclerView.Adapter<ItemAdapter.listViewHolder>() {
class listViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

}
}

    Masih Error juga,? Sekarang arahkan cursor ke class ItemAdapter sehingga muncul library. pilih Implement Members sehingga muncul dialog Implement Member. Terdapat 3 class di dalam Dialog tersebut. Pilih ke 3 class tersebut dan klik OK.


    Nah, code program anda akan berubah seperti berikut:

package com.example.recyclerview

import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView

class ItemAdapter(
private val listBuku : ArrayList<DataItem>
) : RecyclerView.Adapter<ItemAdapter.listViewHolder>() {
class listViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): listViewHolder {
TODO("Not yet implemented")
}

override fun getItemCount(): Int {
TODO("Not yet implemented")
}

override fun onBindViewHolder(holder: listViewHolder, position: Int) {
TODO("Not yet implemented")
}
}

    Lengkapi script seperti berikut:
package com.example.buku

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView

class ItemAdapter(
private val listBuku: ArrayList<DataItem> //DataItem adalah nama dataclass
) : RecyclerView.Adapter<ItemAdapter.ListViewHolder>() { //ItemAdapter adalah nama
class ListViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val tvJudul: TextView = itemView.findViewById(R.id.tv_judul)
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ListViewHolder {
val view: View = LayoutInflater.from(parent.context).inflate(R.layout.list_buku, parent, false) // list_buku adalah nama file xml
return ListViewHolder(view)
}
override fun getItemCount(): Int = listBuku.size

override fun onBindViewHolder(holder: ListViewHolder, position: Int) {
val (judul) = listBuku[position]
holder.tvJudul.text = judul
}
}

    Sampai disini kita telah selesai membuat Class Adapter. Selanjutnya kita akan bermain-main di MainActivity.kt. Silahkan buka file MainActivity.kt:

package com.example.buku

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView

class MainActivity : AppCompatActivity() {
private lateinit var rvBuku: RecyclerView
private val list = ArrayList<DataItem>()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
rvBuku = findViewById(R.id.rv_buku) // id dari recyclerView
rvBuku.setHasFixedSize(true)

list.addAll(getListBuku())
showBuku()
}

private fun getListBuku():ArrayList<DataItem>{
val dataJudul = resources.getStringArray(R.array.data_judul)
val listBuku = ArrayList<DataItem>()

for (i in dataJudul.indices) {
val buku = DataItem(dataJudul[i])
listBuku.add(buku)
}
return listBuku
}

private fun showBuku(){
rvBuku.layoutManager = LinearLayoutManager(this)
val listItem = ItemAdapter(list)
rvBuku.adapter = listItem
}
}

Jalankan Projek Anda. Jika semua langkah anda lakukan secara benar, maka hasilnya akan seperti berikut ini:



    Nah, sampai disini kita sudah selesai membuat RecyclerView. 

    Nah sekarang coba anda masuk ke string.xml dan lengkapi data_judul seperti berikut:

<string-array name="data_judul">
<item>Aplikasi Komputer</item>
<item>30 Menit Mahir Jaringan Komputer</item>
<item>Buku Mahir Web Programming</item>
<item>Jaringan Komputer Microtik</item>
<item>Pemrograman Strukturdata C</item>
<item>Buku Panduan Dasar Pemrograman Untuk Pemula</item>
<item>Buku Sakti Pemrograman Web</item>
<item>Pengantar Aplikasi Komputer</item>
</string-array>

    Amati apa yang terjadi pada program anda. Anda akan dapat memahami bahwa data yang di tampilkan adalah data yang di buat di string.xml tersebut. Nah, Bagaimana dengan cara upload gambar. Akan kita bahas pada artikel selanjutnya.

Post a Comment

0Comments

Post a Comment (0)