RecyclerView adalah versi ListView Yang Fleksibel dan Canggih dari Fleksibel dari ListView Standart atau yang biasa.
Jika anda Ingin Menampilkan data yang besar atau data yang sering berubah ubah maka di rekomendasikan menggunakan RecyclerView.
Pada Model RecyclerView, memiliki komponen berbeda dalam bekerja sama untuk menampilkan data menampung keseluruhan antarmuka user. Anda dapat menggunakan salah satu dari pengelolah tata letak standart seperti linearLayoutManager atau GridLayoutManager
Views dalam List diwakili oleh objek tampilan, objek-objek ini dalah contoh class yang didefinisikan dengan memeperluas RecyclerView.ViewHolder ViewHolder adalah Objek, yang betugas menampilkan satu item dengan tampilan, Misalnya jika daftar anda menmpilkan beberapa data atau list nama mahasiswa maka di gambarkan mewakili satu kelas atau pengelompokan(pemengan satu item). RecyclerView hanya menciptakan banyak pemengan tampilan sebagaimana diperlukan untuk menampilkan bagian di layar yang memiliki konten dinamis, Saat user memilih daftar atau meng scrolls maka RecyclerView me rebind data yang di scrool ke layar. Objek tampilan dikelola oleh adapter,vyang dibuat dengan memperluas RecyclerView.Adpter, Adapter ini menciptakan pemegang tampilan yang sesusai dengan kebutuhan, Aspter juga mengikat pemegang tampilan ke data melakukan dengan meneptakan pemegang tampilan ke posisi dan memanggil metode onBindViewHolder() adapter metode tersebut menggunkan posisi views untuk menentukan apa isi seharusnya berdasarkan posisi daftar viws.
Untuk Dapat Menggunakan RecyclerView pada projek anda, anda perlu Add Libary ke projek caranya
buka File build.gradle, kemudian tambahkan perintah berikut
dependencies { implementation 'com.android.support:recyclerview-v7:27.1.1' }
dependencies { implementation 'com.android.support:recyclerview-v7:27.1.1'
dependencies { implementation 'com.android.support:recyclerview-v7:27.1.1' }
dependencies { implementation 'com.android.support:recyclerview-v7:27.1.1' }Sekarang dapat menambahkan RecyclerView ke file layout, sebgai contoh tata letak berikut menggunakan RecyclerView Sebagai satu0satunya view untuk keseluruhan tata letak :
xml version="1.0" encoding="utf-8"?>
android:id="@+id/my_recycler_view"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
Setelah menambahkan widget RecyclerView Ke tataletaknya, kemudian create file java nya
seperti contoh di bawa ini
class MyActivity : Activity() { private lateinit var recyclerView: RecyclerView private lateinit var viewAdapter: RecyclerView.Adapter<*> private lateinit var viewManager: RecyclerView.LayoutManager override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.my_activity) viewManager = LinearLayoutManager(this) viewAdapter = MyAdapter(myDataset) recyclerView = findViewById<RecyclerView>(R.id.my_recycler_view).apply { // use this setting to improve performance if you know that changes // in content do not change the layout size of the RecyclerView setHasFixedSize(true) // use a linear layout manager layoutManager = viewManager // specify an viewAdapter (see also next example) adapter = viewAdapter } } // ... }java
public class MyActivity extends Activity { private RecyclerView mRecyclerView; private RecyclerView.Adapter mAdapter; private RecyclerView.LayoutManager mLayoutManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.my_activity); mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view); // use this setting to improve performance if you know that changes // in content do not change the layout size of the RecyclerView mRecyclerView.setHasFixedSize(true); // use a linear layout manager mLayoutManager = new LinearLayoutManager(this); mRecyclerView.setLayoutManager(mLayoutManager); // specify an adapter (see also next example) mAdapter = new MyAdapter(myDataset); mRecyclerView.setAdapter(mAdapter); } // ... }
class MyAdapter(private val myDataset: Array<String>) : RecyclerView.Adapter<MyAdapter.ViewHolder>() { // Provide a reference to the views for each data item // Complex data items may need more than one view per item, and // you provide access to all the views for a data item in a view holder. // Each data item is just a string in this case that is shown in a TextView. class ViewHolder(val textView: TextView) : RecyclerView.ViewHolder(textView) // Create new views (invoked by the layout manager) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyAdapter.ViewHolder { // create a new view val textView = LayoutInflater.from(parent.context) .inflate(R.layout.my_text_view, parent, false) as TextView // set the view's size, margins, paddings and layout parameters ... return ViewHolder(textView) } // Replace the contents of a view (invoked by the layout manager) override fun onBindViewHolder(holder: ViewHolder, position: Int) { // - get element from your dataset at this position // - replace the contents of the view with that element holder.textView.text = myDataset[position] } // Return the size of your dataset (invoked by the layout manager) override fun getItemCount() = myDataset.size}
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private String[] mDataset; // Provide a reference to the views for each data item // Complex data items may need more than one view per item, and // you provide access to all the views for a data item in a view holder public static class ViewHolder extends RecyclerView.ViewHolder { // each data item is just a string in this case public TextView mTextView; public ViewHolder(TextView v) { super(v); mTextView = v; } } // Provide a suitable constructor (depends on the kind of dataset) public MyAdapter(String[] myDataset) { mDataset = myDataset; } // Create new views (invoked by the layout manager) @Override public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { // create a new view TextView v = (TextView) LayoutInflater.from(parent.getContext()) .inflate(R.layout.my_text_view, parent, false); ... ViewHolder vh = new ViewHolder(v); return vh; } // Replace the contents of a view (invoked by the layout manager) @Override public void onBindViewHolder(ViewHolder holder, int position) { // - get element from your dataset at this position // - replace the contents of the view with that element holder.mTextView.setText(mDataset[position]); } // Return the size of your dataset (invoked by the layout manager) @Override public int getItemCount() { return mDataset.length; } }
silahkan baca https://developer.android.com/guide/topics/ui/layout/recyclerview#java
source sample :
https://github.com/googlesamples/android-RecyclerView/


