Mobile 19 May 2021 332 views 0 komentar

Latihan 4 Mode List Pada RecyclerView di Android Studio

Latihan 4 Mode List Pada RecyclerView di Android Studio

Apa itu List Mode?

Buatlah project baru dengan nama MyRecyclerView dengan tipe activity Empty Activity, lalu pada berkas build.gradle (module: app) kita tambahkan dibagian dependencies seperti berikut:

apply plugin: 'com.android.application' </code><br /><code class="language-java">android {</code><br /><code class="language-java">    .....</code><br /><code class="language-java">}</code><br /><code class="language-java"> </code><br /><code class="language-java">dependencies {</code><br /><code class="language-java">    implementation 'androidx.appcompat:appcompat:1.2.0'</code><br /><code class="language-java">    implementation 'com.google.android.material:material:1.2.1'</code><br /><code class="language-java">    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'</code><br /><code class="language-java">    implementation 'androidx.recyclerview:recyclerview:1.1.0'</code><br /><code class="language-java">    implementation 'androidx.cardview:cardview:1.0.0'</code><br /><code class="language-java">    implementation 'de.hdodenhof:circleimageview:3.1.0'</code><br /><code class="language-java">    implementation 'com.github.bumptech.glide:glide:4.11.0'</code><br /><code class="language-java">    androidTestImplementation 'androidx.test:runner:1.3.0'</code><br /><code class="language-java">    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'</code><br /><code class="language-java">}

Langkah 1: Tambah Dependencies

Langkah 2: Buat Layout Item

Selanjutnya buat layout baru dengan cara klik kanan pada direktori layout new layout resource file dan kemudian beri nama item_row_hero dengan Root Element LinearLayout. Setelah terbentuk kita lengkapi tampilan tersebut menjadi seperti ini : 

<?xml version="1.0" encoding="utf-8"?></code><br /><code class="language-java"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"</code><br /><code class="language-java">    xmlns:tools="http://schemas.android.com/tools"</code><br /><code class="language-java">    android:layout_width="match_parent"</code><br /><code class="language-java">    android:layout_height="wrap_content"</code><br /><code class="language-java">    android:orientation="horizontal"</code><br /><code class="language-java">    android:padding="16dp"></code><br /><code class="language-java"> </code><br /><code class="language-java">    <de.hdodenhof.circleimageview.CircleImageView</code><br /><code class="language-java">        android:id="@+id/img_item_photo"</code><br /><code class="language-java">        android:layout_width="55dp"</code><br /><code class="language-java">        android:layout_height="55dp"</code><br /><code class="language-java">        android:layout_marginEnd="16dp"</code><br /><code class="language-java">        android:layout_marginRight="16dp"</code><br /><code class="language-java">        tools:src="@tools:sample/avatars" /></code><br /><code class="language-java">    <LinearLayout</code><br /><code class="language-java">        android:layout_width="match_parent"</code><br /><code class="language-java">        android:layout_height="wrap_content"</code><br /><code class="language-java">        android:layout_centerVertical="true"</code><br /><code class="language-java">        android:layout_toEndOf="@id/img_item_photo"</code><br /><code class="language-java">        android:layout_toRightOf="@id/img_item_photo"</code><br /><code class="language-java">        android:orientation="vertical"></code><br /><code class="language-java">        <TextView</code><br /><code class="language-java">            android:id="@+id/tv_item_name"</code><br /><code class="language-java">            android:layout_width="match_parent"</code><br /><code class="language-java">            android:layout_height="wrap_content"</code><br /><code class="language-java">            android:layout_marginBottom="8dp"</code><br /><code class="language-java">            android:textSize="16sp"</code><br /><code class="language-java">            android:textStyle="bold"</code><br /><code class="language-java">            tools:text="@string/heroes_name" /></code><br /><code class="language-java">        <TextView</code><br /><code class="language-java">            android:id="@+id/tv_item_detail"</code><br /><code class="language-java">            android:layout_width="match_parent"</code><br /><code class="language-java">            android:layout_height="wrap_content"</code><br /><code class="language-java">            android:ellipsize="end"</code><br /><code class="language-java">            android:maxLines="2"</code><br /><code class="language-java">            tools:text="@string/detail" /></code><br /><code class="language-java">    </LinearLayout></code><br /><code class="language-java"></LinearLayout>

Catatan:
Pastikan untuk ukuran android:layout_height menggunakan wrap_content semua, supaya ketika dijalankan tidak ada layout kosong / space lebar karena menggunakan match_parent, hal ini karena 1 item nya dihitung 1 layar.

Langkah 3: Konfigurasi Resources

lalu masuk ke bagian res values strings.xml, dan tambahkan baris seperti berikut :

<resources></code><br /><code class="language-java">    <string name="app_name">My Application</string></code><br /><code class="language-java">    <string name="heroes_name">Nama Pahlawan</string></code><br /><code class="language-java">    <string name="detail">Detail</string></code><br /><code class="language-java"></resources>

Langkah 4: Setup Layout Utama

Setelah itu masuk ke activity_main.xml dan lengkapi dengan kode dibawah ini :

<?xml version="1.0" encoding="utf-8"?></code><br /><code class="language-java"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"</code><br /><code class="language-java">    xmlns:tools="http://schemas.android.com/tools"</code><br /><code class="language-java">    android:id="@+id/activity_main"</code><br /><code class="language-java">    android:layout_width="match_parent"</code><br /><code class="language-java">    android:layout_height="match_parent"></code><br /><code class="language-java"> </code><br /><code class="language-java">    <androidx.recyclerview.widget.RecyclerView</code><br /><code class="language-java">        android:id="@+id/rv_heroes"</code><br /><code class="language-java">        android:layout_width="match_parent"</code><br /><code class="language-java">        android:layout_height="match_parent"</code><br /><code class="language-java">        tools:listitem="@layout/item_row_hero" /></code><br /><code class="language-java"></RelativeLayout>

Langkah 5: Buat Model Data

Kemudian buat sebuah kelas model data bernama Hero dengan cara klik kanan pada nama package new Java class, dan masukkan baris seperti berikut :

public class Hero {</code><br /><code class="language-java">    private String name;</code><br /><code class="language-java">    private String detail;</code><br /><code class="language-java">    private int photo;</code><br /><code class="language-java">}

Setelah menambahkan baris di atas, kemudian tekan Alt+Insert atau Klik Kanan Generate Getter and Setter dan class hero akan ter-generate dengan sendiri seperti berikut :

public class Hero {</code><br /><code class="language-java">    private String name;</code><br /><code class="language-java">    private String detail;</code><br /><code class="language-java">    private int photo;</code><br /><code class="language-java"> </code><br /><code class="language-java">    public String getName() {</code><br /><code class="language-java">        return name;</code><br /><code class="language-java">    }</code><br /><code class="language-java"> </code><br /><code class="language-java">    public void setName(String name) {</code><br /><code class="language-java">        this.name = name;</code><br /><code class="language-java">    }</code><br /><code class="language-java"> </code><br /><code class="language-java">    public String getDetail() {</code><br /><code class="language-java">        return detail;</code><br /><code class="language-java">    }</code><br /><code class="language-java"> </code><br /><code class="language-java">    public void setDetail(String detail) {</code><br /><code class="language-java">        this.detail = detail;</code><br /><code class="language-java">    }</code><br /><code class="language-java"> </code><br /><code class="language-java">    public int getPhoto() {</code><br /><code class="language-java">        return photo;</code><br /><code class="language-java">    }</code><br /><code class="language-java"> </code><br /><code class="language-java">    public void setPhoto(int photo) {</code><br /><code class="language-java">        this.photo = photo;</code><br /><code class="language-java">    }</code><br /><code class="language-java">}

Tambahkan beberapa photo ke dalam folder drawable, berkas photo dapat di unduh disini. dengan catatan nama file yang ada di dalam resource drawable harus menggunakan huruf kecil dan underscore saja.

Langkah 6: Buat Data Source

Setelah itu kita buat class baru dengan nama HeroesData, dan tambahkan baris seperti berikut :

public class HeroesData {</code><br /><code class="language-java">    private static String[] heroNames = {</code><br /><code class="language-java">            "Ahmad Dahlan",</code><br /><code class="language-java">            "Ahmad Yani",</code><br /><code class="language-java">            "Sutomo",</code><br /><code class="language-java">            "Gatot Soebroto",</code><br /><code class="language-java">            "Ki Hadjar Dewantarai",</code><br /><code class="language-java">            "Mohammad Hatta",</code><br /><code class="language-java">            "Soedirman",</code><br /><code class="language-java">            "Soekarno",</code><br /><code class="language-java">            "Soepomo",</code><br /><code class="language-java">            "Tan Malaka"</code><br /><code class="language-java">    };</code><br /><code class="language-java"> </code><br /><code class="language-java">    private static String[] heroDetails = {</code><br /><code class="language-java">            "Salah seorang ulama dan khatib terkemuka di Masjid Besar Kasultanan Yogyakarta pada masa itu, dan ibu dari K.H. Ahmad Dahlan adalah puteri dari H. Ibrahim yang juga menjabat penghulu Kesultanan Ngayogyakarta Hadiningrat pada masa itu. KH. Ahmad Dahlan telah mempelopori kebangkitan ummat Islam untuk menyadari nasibnya sebagai bangsa terjajah yang masih harus belajar dan berbuat.",</code><br /><code class="language-java">            "Jenderal TNI Anumerta Ahmad Yani (juga dieja Achmad Yani; lahir di Purworejo, Jawa Tengah, 19 Juni 1922 – meninggal di Lubang Buaya, Jakarta, 1 Oktober 1965 pada umur 43 tahun) adalah komandan Tentara Nasional Indonesia Angkatan Darat, dan dibunuh oleh anggota Gerakan 30 September saat mencoba untuk menculik dia dari rumahnya.",</code><br /><code class="language-java">            "Sutomo (lahir di Surabaya, Jawa Timur, 3 Oktober 1920 – meninggal di Padang Arafah, Arab Saudi, 7 Oktober 1981 pada umur 61 tahun) lebih dikenal dengan sapaan akrab oleh rakyat sebagai Bung Tomo, adalah pahlawan yang terkenal karena peranannya dalam membangkitkan semangat rakyat untuk melawan kembalinya penjajah Belanda melalui tentara NICA, yang berakhir dengan pertempuran 10 November 1945 yang hingga kini diperingati sebagai Hari Pahlawan.",</code><br /><code class="language-java">            "Jenderal TNI (Purn.) Gatot Soebroto (lahir di Sumpiuh, Banyumas, Jawa Tengah, 10 Oktober 1907 – meninggal di Jakarta, 11 Juni 1962 pada umur 54 tahun) adalah tokoh perjuangan militer Indonesia dalam merebut kemerdekaan dan juga pahlawan nasional Indonesia. Ia dimakamkan di Ungaran, kabupaten Semarang.",</code><br /><code class="language-java">            "Raden Mas Soewardi Soerjaningrat (EBI: Suwardi Suryaningrat, sejak 1922 menjadi Ki Hadjar Dewantara, EBI: Ki Hajar Dewantara, beberapa menuliskan bunyi bahasa Jawanya dengan Ki Hajar Dewantoro; lahir di Pakualaman, 2 Mei 1889 – meninggal di Yogyakarta, 26 April 1959 pada umur 69 tahun; selanjutnya disingkat sebagai \"Soewardi\" atau \"KHD\") adalah aktivis pergerakan kemerdekaan Indonesia, kolumnis, politisi, dan pelopor pendidikan bagi kaum pribumi Indonesia dari zaman penjajahan Belanda. Ia adalah pendiri Perguruan Taman Siswa, suatu lembaga pendidikan yang memberikan kesempatan bagi para pribumi untuk bisa memperoleh hak pendidikan seperti halnya para priyayi maupun orang-orang Belanda.",</code><br /><code class="language-java">            "Dr.(HC) Drs. H. Mohammad Hatta (lahir dengan nama Mohammad Athar, dikenal sebagai Bung Hatta; lahir di Fort de Kock (sekarang Bukittinggi, Sumatera Barat), Hindia Belanda, 12 Agustus 1902 – meninggal di Jakarta, 14 Maret 1980 pada umur 77 tahun) adalah tokoh pejuang, negarawan, ekonom, dan juga Wakil Presiden Indonesia yang pertama. Ia bersama Soekarno memainkan peranan penting untuk memerdekakan bangsa Indonesia dari penjajahan Belanda sekaligus memproklamirkannya pada 17 Agustus 1945. Ia juga pernah menjabat sebagai Perdana Menteri dalam Kabinet Hatta I, Hatta II, dan RIS. Ia mundur dari jabatan wakil presiden pada tahun 1956, karena berselisih dengan Presiden Soekarno. Hatta juga dikenal sebagai Bapak Koperasi Indonesia.",</code><br /><code class="language-java">            "Jenderal Besar Raden Soedirman (EYD: Sudirman; lahir 24 Januari 1916 – meninggal 29 Januari 1950 pada umur 34 tahun) adalah seorang perwira tinggi Indonesia pada masa Revolusi Nasional Indonesia. Menjadi panglima besar Tentara Nasional Indonesia pertama, ia secara luas terus dihormati di Indonesia. Terlahir dari pasangan rakyat biasa di Purbalingga, Hindia Belanda, Soedirman diadopsi oleh pamannya yang seorang priyayi. Setelah keluarganya pindah ke Cilacap pada tahun 1916, Soedirman tumbuh menjadi seorang siswa rajin; ia sangat aktif dalam kegiatan ekstrakurikuler, termasuk mengikuti program kepanduan yang dijalankan oleh organisasi Islam Muhammadiyah. Saat di sekolah menengah, Soedirman mulai menunjukkan kemampuannya dalam memimpin dan berorganisasi, dan dihormati oleh masyarakat karena ketaatannya pada Islam. Setelah berhenti kuliah keguruan, pada 1936 ia mulai bekerja sebagai seorang guru, dan kemudian menjadi kepala sekolah, di sekolah dasar Muhammadiyah; ia juga aktif dalam kegiatan Muhammadiyah lainnya dan menjadi pemimpin Kelompok Pemuda Muhammadiyah pada tahun 1937. Setelah Jepang menduduki Hindia Belanda pada 1942, Soedirman tetap mengajar. Pada tahun 1944, ia bergabung dengan tentara Pembela Tanah Air (PETA) yang disponsori Jepang, menjabat sebagai komandan batalion di Banyumas. Selama menjabat, Soedirman bersama rekannya sesama prajurit melakukan pemberontakan, namun kemudian diasingkan ke Bogor.",</code><br /><code class="language-java">            "Dr.(H.C.) Ir. H. Soekarno (ER, EYD: Sukarno, nama lahir: Koesno Sosrodihardjo) (lahir di Surabaya, Jawa Timur, 6 Juni 1901 – meninggal di Jakarta, 21 Juni 1970 pada umur 69 tahun) adalah Presiden pertama Republik Indonesia yang menjabat pada periode 1945–1967. Ia memainkan peranan penting dalam memerdekakan bangsa Indonesia dari penjajahan Belanda. Ia adalah Proklamator Kemerdekaan Indonesia (bersama dengan Mohammad Hatta) yang terjadi pada tanggal 17 Agustus 1945. Soekarno adalah yang pertama kali mencetuskan konsep mengenai Pancasila sebagai dasar negara Indonesia dan ia sendiri yang menamainya.",</code><br /><code class="language-java">            "Prof. Mr. Dr. Soepomo (Ejaan Soewandi: Supomo; lahir di Sukoharjo, Jawa Tengah, 22 Januari 1903 – meninggal di Jakarta, 12 September 1958 pada umur 55 tahun) adalah seorang pahlawan nasional Indonesia. Soepomo dikenal sebagai arsitek Undang-undang Dasar 1945, bersama dengan Muhammad Yamin dan Soekarno.",</code><br /><code class="language-java">            "Tan Malaka atau Ibrahim gelar Datuk Sutan Malaka (lahir di Nagari Pandam Gadang, Suliki, Lima Puluh Kota, Sumatera Barat, 2 Juni 1897 – meninggal di Desa Selopanggung, Kediri, Jawa Timur, 21 Februari 1949 pada umur 51 tahun) adalah seorang pembela kemerdekaan Indonesia, tokoh Partai Komunis Indonesia, juga pendiri Partai Murba, dan merupakan salah satu Pahlawan Nasional Indonesia."</code><br /><code class="language-java">    };</code><br /><code class="language-java"> </code><br /><code class="language-java">    private static int[] heroesImages = {</code><br /><code class="language-java">            R.drawable.ahmad_dahlan,</code><br /><code class="language-java">            R.drawable.ahmad_yani,</code><br /><code class="language-java">            R.drawable.bung_tomo,</code><br /><code class="language-java">            R.drawable.gatot_subroto,</code><br /><code class="language-java">            R.drawable.ki_hadjar_dewantara,</code><br /><code class="language-java">            R.drawable.mohammad_hatta,</code><br /><code class="language-java">            R.drawable.sudirman,</code><br /><code class="language-java">            R.drawable.sukarno,</code><br /><code class="language-java">            R.drawable.supomo,</code><br /><code class="language-java">            R.drawable.tan_malaka</code><br /><code class="language-java">    };</code><br /><code class="language-java"> </code><br /><code class="language-java">    static ArrayList<Hero> getListData() {</code><br /><code class="language-java">        ArrayList<Hero> list = new ArrayList<>();</code><br /><code class="language-java">        for (int position = 0; position < heroNames.length; position++) {</code><br /><code class="language-java">            Hero hero = new Hero();</code><br /><code class="language-java">            hero.setName(heroNames[position]);</code><br /><code class="language-java">            hero.setDetail(heroDetails[position]);</code><br /><code class="language-java">            hero.setPhoto(heroesImages[position]);</code><br /><code class="language-java">            list.add(hero);</code><br /><code class="language-java">        }</code><br /><code class="language-java">        return list;</code><br /><code class="language-java">    }</code><br /><code class="language-java">}

Langkah 7: Buat Adapter

dan buat satu class adapter dengan nama ListHeroAdapter dan lengkapi dengan baris seperti berikut :

public class ListHeroAdapter extends RecyclerView.Adapter<ListHeroAdapter.ListViewHolder> {</code><br /><code class="language-java">    private ArrayList<Hero> listHero;</code><br /><code class="language-java"> </code><br /><code class="language-java">    public ListHeroAdapter(ArrayList<Hero> list) {</code><br /><code class="language-java">        this.listHero = list;</code><br /><code class="language-java">    }</code><br /><code class="language-java"> </code><br /><code class="language-java"> </code><br /><code class="language-java">    @NonNull</code><br /><code class="language-java">    @Override</code><br /><code class="language-java">    public ListViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {</code><br /><code class="language-java">        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_row_hero, viewGroup, false);</code><br /><code class="language-java">        return new ListViewHolder(view);</code><br /><code class="language-java">    }</code><br /><code class="language-java"> </code><br /><code class="language-java">    @Override</code><br /><code class="language-java">    public void onBindViewHolder(@NonNull final ListViewHolder holder, int position) {</code><br /><code class="language-java">        Hero hero = listHero.get(position);</code><br /><code class="language-java">        Glide.with(holder.itemView.getContext())</code><br /><code class="language-java">                .load(hero.getPhoto())</code><br /><code class="language-java">                .apply(new RequestOptions().override(55, 55))</code><br /><code class="language-java">                .into(holder.imgPhoto);</code><br /><code class="language-java">        holder.tvName.setText(hero.getName());</code><br /><code class="language-java">        holder.tvDetail.setText(hero.getDetail());</code><br /><code class="language-java">    }</code><br /><code class="language-java"> </code><br /><code class="language-java">    @Override</code><br /><code class="language-java">    public int getItemCount() {</code><br /><code class="language-java">        return listHero.size();</code><br /><code class="language-java">    }</code><br /><code class="language-java"> </code><br /><code class="language-java">    class ListViewHolder extends RecyclerView.ViewHolder {</code><br /><code class="language-java">        ImageView imgPhoto;</code><br /><code class="language-java">        TextView tvName, tvDetail;</code><br /><code class="language-java"> </code><br /><code class="language-java">        ListViewHolder(View itemView) {</code><br /><code class="language-java">            super(itemView);</code><br /><code class="language-java">            imgPhoto = itemView.findViewById(R.id.img_item_photo);</code><br /><code class="language-java">            tvName = itemView.findViewById(R.id.tv_item_name);</code><br /><code class="language-java">            tvDetail = itemView.findViewById(R.id.tv_item_detail);</code><br /><code class="language-java">        }</code><br /><code class="language-java">    }</code><br /><code class="language-java">}

Langkah 8: Setup di Activity

dan terakhir masuk ke kelas MainActivity, dan inisiasikan RecyclerView yang sudah dibuat di activity_main.xml dan memanggil data yang telah dibuat pada class HeroesData

public class MainActivity extends AppCompatActivity {</code><br /><code class="language-java">    private RecyclerView rvHeroes;</code><br /><code class="language-java">    private ArrayList<Hero> list = new ArrayList<>();</code><br /><code class="language-java"> </code><br /><code class="language-java">    @Override</code><br /><code class="language-java">    protected void onCreate(Bundle savedInstanceState) {</code><br /><code class="language-java">        super.onCreate(savedInstanceState);</code><br /><code class="language-java">        setContentView(R.layout.activity_main);</code><br /><code class="language-java"> </code><br /><code class="language-java">        rvHeroes = findViewById(R.id.rv_heroes);</code><br /><code class="language-java">        rvHeroes.setHasFixedSize(true);</code><br /><code class="language-java"> </code><br /><code class="language-java">        list.addAll(HeroesData.getListData());</code><br /><code class="language-java">        showRecyclerList();</code><br /><code class="language-java">    }</code><br /><code class="language-java"> </code><br /><code class="language-java">    private void showRecyclerList(){</code><br /><code class="language-java">        rvHeroes.setLayoutManager(new LinearLayoutManager(this));</code><br /><code class="language-java">        ListHeroAdapter listHeroAdapter = new ListHeroAdapter(list);</code><br /><code class="language-java">        rvHeroes.setAdapter(listHeroAdapter);</code><br /><code class="language-java">    }</code><br /><code class="language-java">}

dan jalankan aplikasi yang telah dibuat.

Kesimpulan

*Update Android Studio 4.1

Selamat Mencoba, terima kasih.

Tags Artikel: #Latihan

Bagikan artikel ini:

Komentar (0)

Belum ada komentar. Jadilah yang pertama memberikan tanggapan!

Tinggalkan Komentar