Ashwin
Ashwin

Reputation: 13527

Which View/Widget can be used to display images on the screen one at a time by swiping horizontally?

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

Answers (6)

Rohail Ahmed
Rohail Ahmed

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

mmlooloo
mmlooloo

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

Vinay W
Vinay W

Reputation: 10190

ViewPager(for swiping between views) + UniversalImageLoader(for loading images from URLs, with caching etc)

Upvotes: 2

Vipin Sharma
Vipin Sharma

Reputation: 704

This problem can be solved by using ViewPager.

Link: http://developer.android.com/training/animation/screen-slide.html

Upvotes: 3

Paul LeBeau
Paul LeBeau

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

JASON G PETERSON
JASON G PETERSON

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

Related Questions