Reputation: 13527
I have a list view in which I want each list item will contain images. But the images will be displayed one at a time. SO, at a time for every list item only one image will be displayed. To view other images in the list item,one has to swipe horizontally.
Is there any inbuilt widget that handles this in android?
EDIT1
My List item not only has Image but it also contains other views like textview, seekbar etc. So each list item will contain Image, textview, seekbar etc but the majority of the space will be occupied by the Image. Now, for each list item, when the image is swiped horizontally, another image has to be downloaded from a ulr and displayed.
EDIT2
I did a bit of research on ViewPager but many references like the answers here and this blog seem to suggest that using ViewPager inside a listview is not a good idea. Why is that? If it is not a good idea, what is a good alternative?
Upvotes: 2
Views: 275
Reputation: 111
I have achieved the same functionality by using ViewPager, you can either put the SeekBar and TextView in the Fragment class off which you are gonna make multiple instances for each item and add to the pageradapter,
You can also add the TextView and SeekBar above the ViewPager Layout in your main fragment layout file and change the text and data on seekbar on viewpager's on item change listener, this looks more neat and this is the approach i've used
Upvotes: 0
Reputation: 18977
If it is not, what is a good alternative?
I think you should use RecyclerView
with LinearLayoutManager.HORIZONTAL
. All things like recycling the views, view holder design pattern
can be done easily with it and it is a new widget
that google
introduced and you can use it instead of ListView + ViewPager
. because as you suggested it is not recommended to use viewpager
inside listview
. Although you can use horizontalScrollView
but it dose not recycle the view. Other third party library like this exist but I recommend you use RecyclerView
with LinearLayoutManager.HORIZONTAL
because it is from google and it is normally tested more than people library. And another thing is you can use other layout manager like GridLayoutManager
or having for example 3 rows that swiping horizontally or other good effects like adding animation and .... that google
provided with RecyclerView
.
For downloading the images you can use Picasso,Volley, Universal Image Loader or a lot of other libraries that exist.
Happy Coding :-)
Upvotes: 2
Reputation: 10190
ViewPager(for swiping between views) + UniversalImageLoader(for loading images from URLs, with caching etc)
Upvotes: 2
Reputation: 704
This problem can be solved by using ViewPager.
Link: http://developer.android.com/training/animation/screen-slide.html
Upvotes: 3
Reputation: 101820
Do you just want swipe to change images? Or do you want the images to scroll as you swipe? For the former, you can just use a GestureDetector. For the latter you would probably use a ViewPager. See http://developer.android.com/training/animation/screen-slide.html
Upvotes: 0
Reputation: 2223
Not sure I'm following you, but rather than a ListView
wouldn't it be simpler to use ViewPager
with simple Fragment that wraps a single image at a time. That way you get horizontal swiping "for free".
Upvotes: 1