9 RecyclerView
9 RecyclerView
Contents
● What is RecyclerView?
● Implementing a RecyclerView
What is RecyclerView?
● RecyclerView is a view capable of displaying
scrollable list of items
● It only creates views (widget) if needed
● It recycles views, if a row is not displayed
anymore, it will be recycled and only its
content will change.
● Efficient
○ Uses and reuses limited number of View
elements
○ Updates changing data fast
View recycling
RecyclerView components
RecyclerView components
● Data
● RecyclerView scrolling list for list items—RecyclerView
● Layout for one item of data—XML file
● Layout manager handles the organization of UI components in a View—
Recyclerview.LayoutManager
● Adapter connects data to the RecyclerView—RecyclerView.Adapter
● ViewHolder has view information for displaying one item—
RecyclerView.ViewHolder
Layout manager
● Each ViewGroup has a layout manager
● Use to position View items inside a RecyclerView
● Reuses View items that are no longer visible to the user
● Built-in layout managers
○ LinearLayoutManager
○ GridLayoutManager
○ StaggeredGridLayoutManager
● Extend RecyclerView.LayoutManager
Adapter
● Helps incompatible interfaces work together
○ Example: Takes data from database Cursor and prepares strings to put
into a View
● Intermediary between data and View
● Manages creating, updating, adding, deleting View items as
underlying data changes
● RecyclerView.Adapter
ViewHolder
● Used by the adapter to prepare one View with data for one list
item
● Layout specified in an XML resource file
● Can have clickable elements
● Is placed by the layout manager
● RecyclerView.ViewHolder
Implementing RecyclerView
1. Add RecyclerView dependency to build.gradle if needed
2. Add RecyclerView to layout
3. Create XML layout for item
4. Extend RecyclerView.Adapter
5. Extend RecyclerView.ViewHolder
6. In Activity onCreate(), create RecyclerView with adapter and layout
manager
1. Add dependency to app/build.gradle
Add RecyclerView dependency to build.gradle if needed:
dependencies {
...
compile 'com.android.support:recyclerview-v7:26.1.0’
...
}
2. Add RecyclerView to XML Layout
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
3. Create layout for 1 list item
<LinearLayout …>
<TextView
android:id="@+id/word"
style="@style/word_title" />
</LinearLayout>
4. Implement the adapter
public class WordListAdapter
extends RecyclerView.Adapter<WordListAdapter.WordViewHolder> {