Recycler View

Saat Anda menampilkan banyak item dalam daftar yang bisa digulir, sebagian besar item tidak terlihat. Misalnya, dalam daftar kata yang panjang atau banyak judul berita, pengguna hanya melihat sedikit item daftar untuk setiap kalinya.

Source : google developer tarining

Atau, Anda bisa memiliki kumpulan data yang akan berubah saat pengguna berinteraksi dengannya. Jika Anda membuat tampilan baru setiap kali data berubah, itu juga membuat banyak tampilan, bahkan untuk kumpulan data yang kecil.

Kelas RecyclerView adalah versi ListView yang lebih canggih dan fleksibel. Widget ini adalah kontainer untuk menampilkan rangkaian data besar yang bisa digulir secara sangat efisien dengan mempertahankan tampilan dalam jumlah terbatas.

Gunakan widget RecyclerView bila Anda perlu menampilkan banyak data yang bisa digulir (scroll), atau kumpulan data dengan elemen yang berubah pada waktu proses berdasarkan aksi pengguna atau kejadian jaringan.

Komponen RecyclerView

Untuk menampilkan data dalam RecyclerView, Anda memerlukan bagian berikut:

  • Data. Tidak penting dari mana asal data. Anda bisa membuat data secara lokal, seperti yang Anda lakukan dalam latihan, mendapatkannya dari database perangkat seperti yang akan Anda lakukan dalam praktik nanti, atau menariknya dari awan.

  • RecyclerView. Daftar gulir yang berisi item daftar.

    Instance RecyclerView sebagaimana didefinisikan dalam file layout aktivitas Anda akan bertindak sebagai kontainer tampilan.

  • Layout untuk satu item data. Semua item daftar tampak sama, sehingga Anda bisa menggunakan layout yang sama untuk semuanya. Layout item harus dibuat secara terpisah dari layout aktivitas, sehingga satu per satu tampilan item bisa dibuat dan diisi data.

  • Pengelola layout Pengelola layout menangani penyusunan (layout) komponen antarmuka pengguna dalam suatu tampilan. Semua grup tampilan memiliki pengelola layout. Untuk LinearLayout, sistem Android menangani layout untuk Anda. RecyclerView memerlukan pengelola layout eksplisit untuk mengelola susunan item daftar yang terdapat di dalamnya. Layout ini bisa vertikal, horizontal, atau berupa petak.

    Pengelola layout adalah instance dari Recyclerview.LayoutManager untuk menyusun layout item dalam RecyclerView

  • Adapter. Adapter menghubungkan data Anda dengan RecyclerView. Adapter menyiapkan data dan cara menampilkan data dalam view holder. Bila data berubah, adapter akan memperbarui materi tampilan item daftar terkait dalam RecyclerView.

    Adapter juga merupakan ekstensi dari RecyclerView.Adapter. Adapter menggunakan ViewHolder untuk menampung tampilan yang menyusun setiap item dalam RecyclerView, dan mengikat data untuk ditampilkan dalam tampilan yang menampilkannya.

  • View holder. View holder memperluas kelas ViewHolder. View holder berisi tampilan informasi untuk menampilkan satu item dari layout item.

    View holder digunakan oleh adapter untuk menyediakan data, yang merupakan ekstensi dari RecyclerView.ViewHolder

Diagram di bawah ini menampilkan hubungan antara komponen-komponen ini.

Data

Semua data yang bisa ditampilkan akan ditampilkan dalam RecyclerView.

  • Teks

  • Gambar

  • Ikon

Data bisa berasal dari sumber mana pun.

  • Dibuat oleh aplikasi. Misalnya, kata acak untuk permainan.

  • Dari database lokal. Misalnya, daftar kontak.

  • Dari storage awan atau internet. Misalnya judul berita.

RecyclerView

RecyclerView adalah:

  • Suatu grup Tampilan untuk kontainer yang bisa digulir

  • Ideal untuk daftar item serupa yang panjang

  • Hanya menggunakan tampilan dalam jumlah terbatas yang digunakan kembali saat tampilan tersebut tidak tampak di layar. Hal ini menghemat memori dan mempercepat pembaruan item daftar saat pengguna menggulir data, karena tidak perlu membuat tampilan baru untuk setiap item yang muncul.

  • Secara umum, RecyclerView menyimpan sebanyak mungkin tampilan item yang muat di layar, plus sedikit tambahan pada setiap akhir daftar untuk memastikan pengguliran berjalan cepat dan lancar.

Layout Item

Layout adalah sebuah item daftar yang disimpan dalam file terpisah sehingga adapter bisa membuat tampilan item dan mengedit materinya secara independen dari layout aktivitas.

Source : stackoverflow

Layout Manager

Pengelola layout memosisikan tampilan item di dalam grup tampilan, seperti RecyclerView dan menentukan kapan harus menggunakan kembali tampilan item yang tidak lagi terlihat oleh pengguna. Untuk menggunakan kembali (atau mendaur ulang) tampilan, pengelola layout bisa meminta adapter untuk mengganti materi tampilan dengan elemen lain dari kumpulan data. Mendaur ulang tampilan dengan cara ini akan meningkatkan kinerja karena menghindari pembuatan tampilan yang tidak diperlukan atau melakukan pencarian findViewById() yang mahal.

RecyclerView menyediakan semua pengelola layout bawaan ini:

Untuk membuat pengelola layout khusus, perluas kelas RecyclerView.LayoutManager.

Source : eyehunts.com

Adapter

Adapter membantu dua antarmuka yang tidak kompatibel untuk bekerja bersama. Dalam RecyclerView, adapter menghubungkan data dengan tampilan. Adapter bertindak sebagai perantara antara data dan tampilan. Adapter menerima atau mengambil data, melakukan semua pekerjaan yang diperlukan agar bisa ditampilkan dalam suatu tampilan, dan menempatkan data dalam tampilan.

Misalnya, adapter bisa menerima data dari database sebagai objek Cursor, mengekstrak kata dan definisinya, mengonversinya menjadi string, dan menempatkan string dalam suatu tampilan item yang memiliki tampilan teks, satu untuk kata dan satu untuk definisi. Anda akan mengetahui selengkapnya tentang kursor dalam bab berikutnya.

RecyclerView.Adapter mengimplementasikan sebuah view holder, dan harus mengganti callback berikut:

  • onCreateViewHolder() memekarkan tampilan item dan mengembalikan view holder baru yang memuatnya. Metode ini dipanggil bila RecyclerView memerlukan view holder baru untuk menyatakan suatu item.

  • onBindViewHolder() menyetel materi item pada posisi yang ditentukan dalam RecyclerView. Proses ini dipanggil oleh RecyclerView, misalnya, bila sebuah item baru bergulir ke tampilan.

public class WordListAdapter extends RecyclerView.Adapter<WordListAdapter.WordViewHolder> {

    private final LinkedList<String> mWordList;
    private final LayoutInflater mInflater;

    class WordViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        public final TextView wordItemView;
        final WordListAdapter mAdapter;

        public WordViewHolder(View itemView, WordListAdapter adapter) {
            super(itemView);
            wordItemView = (TextView) itemView.findViewById(R.id.word);
            this.mAdapter = adapter;
            itemView.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            // All we do here is prepend "Clicked! " to the text in the view, to verify that
            // the correct item was clicked. The underlying data does not change.
            wordItemView.setText ("Clicked! "+ wordItemView.getText());
        }
    }

    public WordListAdapter(Context context, LinkedList<String> wordList) {
        mInflater = LayoutInflater.from(context);
        this.mWordList = wordList;
    }

    @Override
    public WordViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        // Inflate an item view.
        View mItemView = mInflater.inflate(R.layout.wordlist_item, parent, false);
        return new WordViewHolder(mItemView, this);
    }

    @Override
    public void onBindViewHolder(WordViewHolder holder, int position) {
        // Retrieve the data for that position.
        String mCurrent = mWordList.get(position);
        // Add the data to the view holder.
        holder.wordItemView.setText(mCurrent);
    }

    @Override
    public int getItemCount() {
        return mWordList.size();
    }
}

View holder

RecyclerView.ViewHolder menjelaskan tampilan data dan metadata tentnag tempatnya dalam RecyclerView. Setiap view holder menampung satu rangkaian data. Adapter menambahkan data ke view holder untuk ditampilkan oleh pengelola layout.

Definisikan layout view holder Anda dalam file sumber daya XML. Layout ini bisa berisi (hampir) semua tipe tampilan, termasuk elemen yang bisa diklik.

Implementasi RecyclerView

Mengimplementasikan RecyclerView memerlukan langkah-langkah berikut:

  1. Tambahkan dependensi RecyclerView ke file app/build.gradle aplikasi.

  2. Tambahkan RecyclerView ke layout aktivitas

  3. Buat file XML layout untuk satu item

  4. Perluas RecyclerView.Adapter dan implementasikan metode onCrateViewHolder serta onBindViewHolder.

  5. Perluas RecyclerView.ViewHolder untuk membuat view holder bagi layout item Anda. Anda bisa menambahkan perilaku klik dengan mengganti metode onClick.

  6. Dalam aktivitas Anda, dalam metode onCreate method, buat RecyclerView dan inisialisasi dengan adapter serta pengelola layout.

Last updated

Was this helpful?