COPAS

LightBlog

Monday, August 6, 2018

MEMBUAT LIST VIEW MENGGUNAKAN RECYCLERVIEW PADA ANDORID STUDIO


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);
    }
    // ...
}

tambahkan List Adpter
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/


No comments:

Post a Comment