RecycleeView based Android interview questions and answers
1) How does RecyclerView work?
- RecyclerView is designed to display long lists (or grids) of items. Say we want to display 100 row of items. A simple approach would be to just create 100 views, one for each row and lay all of them out. But that would be wasteful because at any point of time, only 10 or so items could fit on screen and the remaining items would be off screen. So RecyclerView instead creates only the 10 or so views that are on screen. This way you get 10x better speed and memory usage.
- But what happens when you start scrolling and need to start showing next views? Again a simple approach would be to create a new view for each new row that you need to show. But this way by the time you reach the end of the list you will have created 100 views and your memory usage would be the same as in the first approach. And creating views takes time, so your scrolling most probably wouldn’t be smooth. This is why RecyclerView takes advantage of the fact that as you scroll, new rows come on screen also old rows disappear off screen. Instead of creating new view for each new row, an old view is recycled and reused by binding new data to it.
- This happens inside the
onBindViewHolder()
method. Initially you will get new unused view holders and you have to fill them with data you want to display. But as you scroll you will start getting view holders that were used for rows that went off screen and you have to replace old data that they held with new data.
2)How does RecyclerView differ from ListView?
- ViewHolder Pattern: Recyclerview implements the ViewHolders pattern whereas it is not mandatory in a ListView. A RecyclerView recycles and reuses cells when scrolling.
- What is a ViewHolder Pattern? — A ViewHolder object stores each of the component views inside the tag field of the Layout, so you can immediately access them without the need to look them up repeatedly. In ListView, the code might call
findViewById()
frequently during the scrolling of ListView, which can slow down performance. Even when the Adapter returns an inflated view for recycling, you still need to look up the elements and update them. A way around repeated use offindViewById()
is to use the "view holder" design pattern. - LayoutManager: In a ListView, the only type of view available is the vertical ListView. A RecyclerView decouples list from its container so we can put list items easily at run time in the different containers (linearLayout, gridLayout) by setting LayoutManager.
- Item Animator: ListViews are lacking in support of good animations, but the RecyclerView brings a whole new dimension to it
3) What is
SnapHelper
? MindOrksHow to Improve RecyclerView Scrolling Performance in Android?
- Set a specific width and height to ImageView in RecyclerView items
- Avoid using NestedView
- Use the setHasFixedsize method
- Use the image loading library for loading images
- Do less work in the OnBindViewHolder method
- Use the NotifyItem method for your RecyclerView
To read more, refer to the article: How to Improve RecyclerView Scrolling Performance in Android?
Aaaa
Comments
Post a Comment