Sabtu, 04 Maret 2017

Untuk menampilkan sebuah daftar atau list yang complex, di dalam menu item  yang berbentuk kartu(cards), dengan gaya Material Design. Kalian dapat menggunakan ReyclerView dan widget CardView pada Aplikasi Android yang sedang kalian kembangkan.

ReyclerView adalah sebuah versi lanjutan  dari ListView dengan gaya Material Design. Fungsinya sama saja yaitu menampilkan sebuah daftar/list item menu ,namun dengan fitur yang lebih canggih di bandingkan ListView.  RecyclerView digunakan untuk memuat data yang lebih besar ,serta reusable berubah-ubah ,tergantung interaksi user(pengguna).

ReyclerView menggunakan Layout manager  yang berfungsi untuk memposisikan item menu. Serta ReyclerView dapat menampilkan sebuah animasi standar ,pada saat item menu di tambahkan dan dihapus oleh interaksi user (pengguna). Layout manager akan menggunakan Adapter untuk mengatur akses dan resource view dari item data atau Dataset(kumpulan data) ,yang akan ditampilkan pada screen(layar). Contoh penerapanya bisa kalian lihat pada gambar dibawah:



RecylerView
ReyclerView (image by developer.android.com)


Cardview adalah turunan dari (extends) FrameLayout  ,yang akan menampilkan sebuah item menu atau konten dalam bentuk kartu (cards). Ciri-ciri dari Cardview terdapat sebuah bayangan dan sudut bulat(rounded corner).

Pada tutorial belajar android kali ini , kita akan mencoba membuat widget ReyclerView dan CardView dengan gaya Material Design Android.


1. Pertama buka Android Studio 

2. Pilih Start a New Android Studio Project 

Start a New Android Studio Project
Start a New Android Studio Project
                                        


3.Kedua pada bagian Create New Project, sesuaikan dengan nama dan package serta lokasi file yang akan kalian gunakan. Untuk contoh saya menggunakan seperti yang ada di gambar di bawah. Jika sudah pilih Next.



  • Application name: ReyclerView and CardView
  • Company Domain : okedroid.com
  • Package Name   :com.okedroid.reyclerviewandcardview


ReyclerView and CardView new-project
Configure New Project

4. Selanjutnya tentukan Target Android Devices dari Aplikasi kalian , secara default saya menggunakan API 15 untuk minimumnya. Jika sudah pilih Next.


Target Android Devices in Android Studio
Target Android Devices

5. Pada bagian Add an Activity to Mobile , kita bisa memilih Empty Activity lalu pilih Next.


Add an Activity to Mobile
Empty Activity

6. Selanjutnya di bagian Customize the Activity kita hanya perlu memilih tombol Finish.


Cutomize the Activity
Customize the Activity


7.Setelah itu kita tunggu sampai proses building project gradle selesai .




8. Setelah selesai proses building , kita akan mencoba membuat ReyclerView dan CardView  berikut langkah-langkahnya: 


1) Setup Gradle


    Sebelum memulai untuk secara default pastikan pada build gradle khususnya di bagian dependencies kalian setting seperti ini :

    DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
    1. dependencies {
    2.     compile fileTree(dir: 'libs', include: ['*.jar'])
    3.     testCompile 'junit:junit:4.12'
    4.     compile 'com.android.support:appcompat-v7:23.3.0'
    5.     compile 'com.android.support:design:23.3.0'
    6.     compile 'com.android.support:cardview-v7:23.3.0'
    7.     compile 'com.android.support:recyclerview-v7:23.3.0'
    8. }





    2) Layout

    Pada file layout activity_main.xml  ,kalian dapat menerapkan baris intruksi (codingan) dibawah.

    Di file layout ini kita akan mencoba menyematkan widget ReyclerView.


    activity_main.xml

    DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
    1. <?xml version="1.0" encoding="utf-8"?>
    2. <RelativeLayout
    3.     xmlns:android="http://schemas.android.com/apk/res/android"
    4.     xmlns:tools="http://schemas.android.com/tools"
    5.     android:layout_width="match_parent"
    6.     android:layout_height="match_parent"
    7.     tools:context=".MainActivity">
    8.     <android.support.v7.widget.RecyclerView
    9.         xmlns:android="http://schemas.android.com/apk/res/android"
    10.         android:id="@+id/recycler_view"
    11.         android:layout_width="match_parent"
    12.         android:layout_height="match_parent"
    13.         android:clipToPadding="false"
    14.         android:paddingBottom="16dp"
    15.         android:paddingTop="16dp"
    16.         android:scrollbars="vertical"
    17.     />
    18. </RelativeLayout>




    Lalu pada folder layout kalian buat file layout baru , Sebagai contoh nama file yang saya namakan yaitu item_list.xml 

    Di file layout ini kita akan menerapkan dan menampilkan menu item dari widget CardView , yang akan disejajarkan dengan ReyclerView.


    item_list.xml 
    DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
    1. <?xml version="1.0" encoding="utf-8"?>
    2. <android.support.v7.widget.CardView
    3.     xmlns:android="http://schemas.android.com/apk/res/android"
    4.     android:id="@+id/card_view"
    5.     android:clickable="true"
    6.     android:layout_width="match_parent"
    7.     android:layout_height="80dp"
    8.     android:layout_marginBottom="8dp"
    9.     android:layout_marginLeft="16dp"
    10.     android:layout_marginRight="16dp"
    11.     android:foreground="?attr/selectableItemBackground"
    12. >
    13.     <RelativeLayout
    14.         android:layout_width="match_parent"
    15.         android:gravity="center"
    16.         android:layout_height="match_parent">
    17.         <ImageView
    18.             android:id="@+id/daftar_icon"
    19.             android:layout_width="40dp"
    20.             android:layout_height="40dp"
    21.             android:layout_centerVertical="true"
    22.             android:layout_alignParentLeft="true"
    23.             android:layout_marginLeft="10dp"
    24.             android:scaleType="centerCrop"
    25.             android:src="@mipmap/ic_launcher" />
    26.         <TextView
    27.             android:id="@+id/daftar_judul"
    28.             android:layout_centerVertical="true"
    29.             android:layout_width="match_parent"
    30.             android:layout_height="wrap_content"
    31.             android:layout_marginLeft="16dp"
    32.             android:layout_toRightOf="@+id/daftar_icon"
    33.             android:text="Daftar Judul"
    34.             android:textColor="#000000"
    35.             android:textAppearance="?attr/textAppearanceListItem"
    36.             android:textSize="16sp" />
    37.         <TextView
    38.             android:id="@+id/daftar_deskripsi"
    39.             android:layout_width="match_parent"
    40.             android:layout_height="wrap_content"
    41.             android:layout_below="@+id/daftar_judul"
    42.             android:layout_marginLeft="16dp"
    43.             android:layout_toRightOf="@+id/daftar_icon"
    44.             android:textColor="#000000"
    45.             android:ellipsize="end"
    46.             android:singleLine="true"
    47.             android:text="Ini adalah contoh text deskripsi "
    48.             android:textAppearance="?attr/textAppearanceListItem"
    49.             android:textSize="14sp" />
    50.     </RelativeLayout>
    51. </android.support.v7.widget.CardView>


    3) Activity 


    Pada file class Activity MainActivity.java kalian dapat menerapkan baris intruksi (codingan) dibawah.

    Di file class Activity  ini kita akan mendeklarasikan dan membuat obyek ReyclerView dan menset LayoutManager.

    MainActivity.java

    DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
    1. package com.okedroid.reyclerviewandcardview;
    2. import android.support.v7.app.AppCompatActivity;
    3. import android.os.Bundle;
    4. import android.support.v7.widget.LinearLayoutManager;
    5. import android.support.v7.widget.RecyclerView;
    6. public class MainActivity extends AppCompatActivity {
    7.     //deklarasi variabel reyclerview
    8.     RecyclerView recyclerView;
    9.     @Override
    10.     protected void onCreate(Bundle savedInstanceState) {
    11.         super.onCreate(savedInstanceState);
    12.         setContentView(R.layout.activity_main);
    13.         recyclerView= (RecyclerView) findViewById(R.id.recycler_view);
    14.         //menampilkan reyclerview yang ada pada file layout dengan id reycler view
    15.         RecyclerAdapter adapter=new RecyclerAdapter(this);
    16.         //membuat adapter baru untuk reyclerview
    17.         recyclerView.setAdapter(adapter);
    18.         //menset nilai dari adapter
    19.         recyclerView.setHasFixedSize(true);
    20.         //menset setukuran
    21.         recyclerView.setLayoutManager(new LinearLayoutManager(this));
    22.          //menset layoutmanager dan menampilkan daftar/list
    23.         //dalam bentuk linearlayoutmanager pada class saat ini
    24.     }
    25. }




    Lalu pada folder java kalian buat 2 file class Activity baru ,sebagai contoh saya akan menamakan file nya ReyclerAdapter.java dan ReyclerViewHolder.java

    Di file ini kita akan menerapkan Adapter yang digunakan untuk mengatur akses dan resource view dari item data atau Dataset(kumpulan data).

    Kalian salin baris intruksi (codingan) dibawah pada masing-masing file.


    ReyclerAdapter.java
    DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
    1. package com.okedroid.reyclerviewandcardview;
    2. import android.content.Context;
    3. import android.support.v7.widget.RecyclerView;
    4. import android.view.LayoutInflater;
    5. import android.view.View;
    6. import android.view.ViewGroup;
    7. import android.widget.Toast;
    8. /**
    9.  * Created by FATHUR on 5/3/2016.
    10.  */
    11. public class RecyclerAdapter extends  RecyclerView.Adapter<RecyclerViewHolder> {
    12.   //deklarasi variable context
    13.     private final Context context;
    14.     String [] name={"Apple","Facebook","Twitter","Google",
    15.             "Microsoft","Wikipedia","Yahoo","Youtube"};
    16.     // menampilkan list item dalam bentuk text dengan tipe data string dengan variable name
    17.     LayoutInflater inflater;
    18.     public RecyclerAdapter(Context context) {
    19.         this.context=context;
    20.         inflater=LayoutInflater.from(context);
    21.     }
    22.     @Override
    23.     public RecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    24.         View v=inflater.inflate(R.layout.item_list, parent, false);
    25.         RecyclerViewHolder viewHolder=new RecyclerViewHolder(v);
    26.         return viewHolder;
    27.     }
    28.     @Override
    29.     public void onBindViewHolder(RecyclerViewHolder holder, int position) {
    30.         holder.tv1.setText(name[position]);
    31.         holder.tv1.setOnClickListener(clickListener);
    32.         holder.imageView.setOnClickListener(clickListener);
    33.         holder.tv1.setTag(holder);
    34.         holder.imageView.setTag(holder);
    35.     }
    36.     View.OnClickListener clickListener=new View.OnClickListener() {
    37.         @Override
    38.         public void onClick(View v) {
    39. //member aksi saat cardview diklik berdasarkan posisi tertentu
    40.             RecyclerViewHolder vholder = (RecyclerViewHolder) v.getTag();
    41.             int position = vholder.getPosition();
    42.             Toast.makeText(context, "Menu ini berada di posisi " + position, Toast.LENGTH_LONG).show();
    43.         }
    44.     };
    45.     @Override
    46.     public int getItemCount() {
    47.         return name.length;
    48.     }
    49. }





    ReyclerViewHolder.java

    DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
    1. package com.okedroid.reyclerviewandcardview;
    2. import android.support.v7.widget.RecyclerView;
    3. import android.view.View;
    4. import android.widget.ImageView;
    5. import android.widget.TextView;
    6. /**
    7.  * Created by FATHUR on 5/3/2016.
    8.  */
    9. public class RecyclerViewHolder extends RecyclerView.ViewHolder {
    10. // ViewHolder akan mendeskripisikan item view yang ditempatkan di dalam RecyclerView.
    11.     TextView tv1,tv2; //deklarasi textview
    12.     ImageView imageView;  //deklarasi imageview
    13.     public RecyclerViewHolder(View itemView) {
    14.         super(itemView);
    15.         tv1= (TextView) itemView.findViewById(R.id.daftar_judul);
    16.         //menampilkan text dari widget CardView pada id daftar_judul
    17.         tv2= (TextView) itemView.findViewById(R.id.daftar_deskripsi);
    18.         //menampilkan text deskripsi dari widget CardView pada id daftar_deskripsi
    19.         imageView= (ImageView) itemView.findViewById(R.id.daftar_icon);
    20.         //menampilkan gambar atau icon pada widget Cardview pada id daftar_icon
    21.     }
    22. }




    (i) Jika kalian ingin menerapkan Intent untuk menghubungkan Antar Activity pada ReyclerAdapter.java
    kalian replace (ganti) code berikut :
                Toast.makeText(context,"Item Ini berada pada posisi "+position,Toast.LENGTH_LONG ).show();
    menjadi
                if (position == 0 && position < getItemCount())            {                Intent intent = new Intent(context , MainActivity2.class);
                    context.startActivity(intent);
                }


    7) Run project Aplikasi

    Setelah selesai semua kita coba jalankan Aplikasinya lewat Android Studio.

    Hasilnya kurang lebih akan terlihat seperti ini.


    Hasil ReyclerView dan CardView Material Design Android
    Hasil ReyclerView dan CardView


    Sumber : http://www.okedroid.com/2016/05/cara-membuat-reyclerview-dan-cardview-material-design-android.html

    0 komentar:

    Clock

    Gunadarma University

    Popular Posts

    Diberdayakan oleh Blogger.