RecyclerView dengan ViewType
Adakalanya tampilan RecyclerView tidak selalu menampilkan tampilan item yang
homogen. Tampilan tiap item dapat dikustomisasi berdasarkan viewtype. Untuk
melakukan ini tinggal meng-override method getItemViewType()
. Berikut contoh
tampilan yang diharapkan pada praktikum ini.
Langkah-langkah
Perbedaan utama untuk membuat tampilan ini hanya pada tambahan implementasi method
getItemViewType()
danonCreateViewHolder()
. Langkah-langkah lainnya silahkan mengikuti praktikum sebelumnya.Bukalah class
ReversedLogoAdapter
, dan atur menjadi turunan dariRecyclerView.Adapter
Adapter bertugas untuk mengatur apakah tampilan logo berada di sebelah kiri atau kanan. Untuk memudahkan tambahkan 2 buah konstanta berikut.
private static final int LOGO_LEFT = 1; private static final int LOGO_RIGHT = 2;
Pada method
onCreateViewHolder()
tambahkan logika untuk mengatur jika parameterviewType
adalahLOGO_LEFT
maka gunakan layoutitem_logo.xml
dan jikaLOGO_RIGHT
maka gunakan layoutitem_logo_reversed.xml
.View view = null; if (viewType == LOGO_LEFT) { view = LayoutInflater.from(context) .inflate(R.layout.item_logo, parent, false); } else if (viewType == LOGO_RIGHT) { view = LayoutInflater.from(context) .inflate(R.layout.item_logo_reversed, parent, false); } return new ReversedLogoAdapter.ViewHolder(view);
Nilai parameter
viewType
diatur oleh methodgetItemViewType()
. Jika data ganjil tampilkan logo di sebelah kanan, dan jika genap sebaliknya. (Perhitungan data dimulai dari index 0). Tambahkan baris kode berikut untuk mengimplementasikan logika tersebut.@Override public int getItemViewType(int position) { return (position % 2 == 0) ? LOGO_RIGHT : LOGO_LEFT; }
Untuk langkah selanjutnya silahkan mengikuti langkah-langkah praktikum sebelumnya.