Android 9 Development Cookbook(Third Edition)
上QQ阅读APP看书,第一时间看更新

RecyclerView replaces ListView

As the name implies, ListView is designed for displaying lists of information.  If you have prior experience on Android, you’ve probably come across the ListView and possibly GridView controls before. If not while coding, most likely you’ve used it as an app, as it’s one of the most commonly used controls available. For most applications and users, the old ListView was probably sufficient and didn’t pose any problems. As an example, most users could probably see their list of emails in their inbox without any problems.  But for some, they might have so many emails in their inbox that when scrolling through their list, their device would stutter (slight pauses when scrolling). Unfortunately, ListView has many such performance problems.

The most significant performance issue with ListView is caused by creating new item objects for each item when scrolling. Though much of the performance problem could be eliminated with a properly implemented data adapter, the implementation was optional. As the name implies, RecyclerView is based on recycling the list items (the part that was optional in the ListView adapter). There are other changes to the control as well. Whereas ListView has many features built-in, RecyclerView is very basic and relies on additional helper classes to achieve the same functionality. For some, this feels like a step backward with the new control but this design allows it to be expanded much easier.

Where RecylerView really shines is with the flexibility when extending it and animations. Our example here uses a static list so it doesn’t show off the built-in animations, but with dynamic data, your list will take advantage of the Material Design look and feel. Though ListView is not officially deprecated, it is recommended to use RecyclerView for new projects.  It’s a bit more work to get started, but this recipe will give you all the code to get set up.