Add the dependency as described in the Remark section, then add a RecyclerView
to your layout:
<android.support.v7.widget.RecyclerView
android:id="@+id/my_recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
Once you have added a RecyclerView
widget to your layout, obtain a handle to the object, connect it to a layout manager and attach an adapter for the data to be displayed:
mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
// set a layout manager (LinearLayoutManager in this example)
mLayoutManager = new LinearLayoutManager(getApplicationContext());
mRecyclerView.setLayoutManager(mLayoutManager);
// specify an adapter
mAdapter = new MyAdapter(myDataset);
mRecyclerView.setAdapter(mAdapter);
Or simply setup layout manager from xml by adding this lines:
xmlns:app="http://schemas.android.com/apk/res-auto"
app:layoutManager="android.support.v7.widget.LinearLayoutManager"
If you know that changes in content of the RecyclerView
won't change the layout size of the RecyclerView
, use the following code to improve the performance of the component. If RecyclerView has a fixed size, it knows that RecyclerView itself will not resize due to its children, so it doesn’t call request layout at all. It just handles the change itself. If invalidating whatever the parent is, the coordinator, layout, or whatever. (you can use this method even before setting LayoutManager
and Adapter
):
mRecyclerView.setHasFixedSize(true);
RecyclerView
provides these built-in layout managers to use. So you can create a list, a grid and a staggered grid using RecyclerView
: