Currently, I am exploring the option of displaying data from a database by swiping left to right and also allowing users add and remove dat
In term of ease of implementation (this is just my own opinion),
ViewPager
is good for displaying the list of data that is not required often add and remove since PagerAdapter
can't notify each specific item that it is removed or added it can only call notifyDataSetChanged()
which notify that all set of data has been changed. Therefore, it is hard to handle the animation when the item is added or removed.
While in RecyclerView
, RecyclerView.Adapter
has methods like notifyItemInserted(int position)
or notifyItemRemoved(int position)
to notify that specific the item is added or removed and, the animation when item is add or remove is already handle when you called those method.
Moreover, right now it is very easy for RecyclerView
to mimic the ViewPager
behavior by using SnapHelper
. There is PagerSnapHelper
, and the behavior of ViewPager
can be obtained with just a few lines of code. You can contact me if you want the code.
There is no comparison between this two. basically in ViewPager you can scroll only one item at time (either left or right), and in RecyclerView you can scroll to any index. it all depends on your requirements how you want to use it. you need to develop fragments for ViewPages, one for each page. as in RecyclerView you will have a item which will be used by adapter. both of them are easy to implement. there are numerous examples on both of them, you can have a look and get started.
I would say they are comparable in terms of memory usage and ease of implementation. Where they differ most is in the interaction they provide to the user.
ViewPager
is designed to show one item at a time. The visible item takes up full width of the ViewPager
. You can only swipe one item at a time and scrolling always snaps to showing one item in the centre – you're never left in an in-between position partially showing two items.
RecyclerView
with a horizontal layout manager on the other hand can have items of any width – you could be showing many items at once or you could have items wider that RecyclerView
's width or you could match their widths to mimic ViewPager
. You can freely scroll – you are not limited to one item width or RecyclerView
's width, you can do a fling gesture to scroll big distances. And there's no snapping – when the scroll finishes there's no aligning items to the centre or any of the sides.
As you see there are a few differences. I would recommend you to choose your widget based on the UI you want to achieve. If you want ViewPager
's behaviour (one item visible at a time, swipe limited to one item and snapping to show the full item) then go with a ViewPager
. It's possible but not trivial to replicate this behaviour using a RecycleView
. I would definitely say it is way more difficult to use RecyclerView
if you want to make it behave like ViewPager
. Conversely it's pretty much impossible to customise ViewPager
's behaviour, so if that's not what you want then you definitely should use a RecyclerView
.