1 of 27

Lesson 4

Android Developer Fundamentals V2

1

1

1

1

User Interaction

Android Developer Fundamentals V2

RecyclerView

Android Developer Fundamentals V2

RecyclerView

2 of 27

4.4 RecyclerView

2

Android Developer Fundamentals V2

RecyclerView

3 of 27

Contents

  • RecyclerView Components
  • Implementing a RecyclerView

3

Android Developer Fundamentals V2

RecyclerView

4 of 27

What is a RecyclerView?

  • RecyclerView is scrollable container for large data sets
  • Efficient
    • Uses and reuses limited number of View elements
    • Updates changing data fast

4

Android Developer Fundamentals V2

RecyclerView

5 of 27

RecyclerView Components

5

Android Developer Fundamentals V2

RecyclerView

6 of 27

Components

Overview

  • 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 ViewRecyclerview.LayoutManager
  • Adapter connects data to the RecyclerViewRecyclerView.Adapter
  • ViewHolder has view information for displaying one item—RecyclerView.ViewHolder

6

Android Developer Fundamentals V2

RecyclerView

7 of 27

Components

How components fit together overview

7

Android Developer Fundamentals V2

RecyclerView

8 of 27

Layout Manager

What is a layout manager?

8

Android Developer Fundamentals V2

RecyclerView

9 of 27

Adapter

What is an 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

9

Android Developer Fundamentals V2

RecyclerView

10 of 27

Adapter

What is a 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

10

Android Developer Fundamentals V2

RecyclerView

11 of 27

Implementing RecyclerView

11

Android Developer Fundamentals V2

RecyclerView

12 of 27

Implementation

Steps Summary

  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

12

Android Developer Fundamentals V2

RecyclerView

13 of 27

app/build.gradle

Add dependency to app/build.gradle

Add RecyclerView dependency to build.gradle if needed:

dependencies {

...

compile 'com.android.support:recyclerview-v7:26.1.0'

...

}

13

Android Developer Fundamentals V2

RecyclerView

14 of 27

Activity layout

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>

14

Android Developer Fundamentals V2

RecyclerView

15 of 27

Item layout

Create layout for 1 list item

<LinearLayout …>

<TextView

android:id="@+id/word"

style="@style/word_title" />

</LinearLayout>

15

Android Developer Fundamentals V2

RecyclerView

16 of 27

Adapter: Create

Implement the adapter

public class WordListAdapter

extends RecyclerView.Adapter<WordListAdapter.WordViewHolder> {

public WordListAdapter(Context context,

LinkedList<String> wordList) {

mInflater = LayoutInflater.from(context);

this.mWordList = wordList;

}

}

16

Android Developer Fundamentals V2

RecyclerView

17 of 27

Adapter: onCreateViewHolder()

Adapter has 3 required methods

  • onCreateViewHolder()
  • inBindViewHolder()
  • getItemCount()

Let's take a look!

17

Android Developer Fundamentals V2

RecyclerView

18 of 27

Adapter: onCreateViewHolder()

onCreateViewHolder()

@Override

public WordViewHolder onCreateViewHolder(� ViewGroup parent, int viewType) {

// Create view from layout

View mItemView = mInflater.inflate(

R.layout.wordlist_item, parent, false);

return new WordViewHolder(mItemView, this);

}

18

Android Developer Fundamentals V2

RecyclerView

19 of 27

Adapter: onBindViewHolder()

onBindViewHolder()

@Override

public void onBindViewHolder(� WordViewHolder holder, int position) {

// Retrieve the data for that position

String mCurrent = mWordList.get(position);

// Add the data to the view

holder.wordItemView.setText(mCurrent);

}

19

Android Developer Fundamentals V2

RecyclerView

20 of 27

Adapter: getItemCount()

getItemCount()

@Override

public int getItemCount() {

// Return the number of data items to display

return mWordList.size();

}

20

Android Developer Fundamentals V2

RecyclerView

21 of 27

Adapter: ViewHolder Class

Create the view holder in adapter class

class WordViewHolder extends RecyclerView.ViewHolder { //.. }

If you want to handle mouse clicks:

class WordViewHolder extends RecyclerView.ViewHolder

implements View.OnClickListener { //.. }

21

Android Developer Fundamentals V2

RecyclerView

22 of 27

ViewHolder: Constructor

View holder constructor

public WordViewHolder(View itemView, WordListAdapter adapter) {

super(itemView);

// Get the layout

wordItemView = itemView.findViewById(R.id.word);

// Associate with this adapter

this.mAdapter = adapter;

// Add click listener, if desired

itemView.setOnClickListener(this);

}

// Implement onClick() if desired

22

Android Developer Fundamentals V2

RecyclerView

23 of 27

Create RecyclerView

Create the RecyclerView in Activity onCreate()

mRecyclerView = findViewById(R.id.recyclerview);

mAdapter = new WordListAdapter(this, mWordList);

mRecyclerView.setAdapter(mAdapter);

mRecyclerView.setLayoutManager(new

LinearLayoutManager(this));

23

Android Developer Fundamentals V2

RecyclerView

24 of 27

Practical: RecyclerView

  • This is rather complex with many separate pieces. So, there is a whole practical where you implement a RecyclerView that displays a list of clickable words.

  • Shows all the steps, one by one with a complete app

24

Android Developer Fundamentals V2

RecyclerView

25 of 27

Learn more

25

Android Developer Fundamentals V2

RecyclerView

26 of 27

What's Next?

26

  • Concept Chapter: 4.5 RecyclerView
  • Practical: 4.5 RecyclerView

Android Developer Fundamentals V2

RecyclerView

27 of 27

END

27

Android Developer Fundamentals V2