I'm developing an Android app that is used to get Images and texts from the internet using JSON.
I want to display these images and texts in gridview using a lazy loading approach to avoid the out of memory exception.
Say that i need to display 100 items, I want to display only 20 items after opening the activity and when i scroll down, another 20 items will be loaded, and so on.
How can i achieve that?
Related
I want to get the images from json and show it into gridview. I see the below link as reference
http://www.androidbegin.com/tutorial/android-json-parse-images-and-texts-tutorial/
It is working for only 10-20 images.But i want to show thousands of images show it into gridview..
and also it is ovescrolled.I mean if u scrolling up, it is scrolling upto first row is disappering(so
background is appering).Plese Help me and how can i solve this issu's
To solve this i would recommend you to break the whole image set into a smaller set and every set contain 20 images, Now you can load first 20 images using any 3rd party image downloading library like Volley,Android Universal image loader etc.
secondly now if user scroll down than download next set of 20 images
logically you need to implement pagination here other wise you face heap issue.
I need to display a list of items each with text and various number of images.
I'm currently using a ListView with custom adapter to show these items. And for each item, I used a HorizontalScrollView with a LinearLayout in it to display the images. In the getView method of the ListView, I read the image URIs of each item and dynamically create ImageViews, then load the images asynchronously. I used a ViewHolder to hold the LinearLayout which contains all the ImageViews of each item.
The problem is, if I scroll down the ListView and scroll back, I'll lost the content of the item, which means I have to load the images again. And most of the images are too large and loads very slow. Actually on my app the screen can show only about 2 or 3 items once, so the scroll happens very frequently.
I have some ideas to improve this, but I'm not sure whether one of them will results better.
Since I'm just showing a thumbnail of each image, maybe I can save the thumbnails into a temp dir and load them dynamically, loading small images will be much faster. And I might have to clear that temp dir when it gets large.
I have at most 9 images for each item, so it might still be slow even if I cache the thumbnails and scroll frequently. And maybe I have to show the list manually instead of using ListView, so each item will not be reused, and the load will happen only once. But, the list will grow large in the future, if I preserve like 100 items in the LinearLayout my app may still crash.
Other better options...
Any advice will be helpful! Thanks!
You can use LazyLoading to display your image. You can use Universal Image Loader for this purpose. What lazyloading does is download an image once, cache it and display the image from cache during subsequent requests.
In one section of my app , I m showing images to 1024+ websites inside a gridview. When the images are not present on the devices they are downloaded with an async task and the image is saved in the data folder. The grid view has a section indexer, adapter and fast scroll associated with it.
However I have noticed that the app becomes really slow when I try to fast scroll to different positions in the app. A solution \[here\]\[1\] hints implementing a hashmap to store images. The total size of the images I have are around .3mb . Will storing the bitmap in the map help speed up the app ?
I am using GridView to display more than 100 images from web. Its takes time to load and display, so I use lazy loading but that does not speed it up.
So I want to display the view or activity first and then I want to display the images in the background.
How do I achieve this?
Thank you
Have you tried Fedor's Lazy Loading logic: Lazy load of images in ListView
Yes this answer is for Loading images inside the ListView, but you can use the same for GridView as well. I had implemented previously and it was working fine in my case.
In android mobile we have an default application Market, under submenu there is functionality called all applications. In this, first it shows only ten records in which it will display defalut image and text, then in back ground it will update images. When we scroll down (i.e., end of list) and it shows loading and then it loads next 10, images will load lazily.
How to acheive this senario.
Thanks in Adavance
Jayanth
In this, first it shows only ten
records in which it will display
defalut image and text, then in back
ground it will update images.
I have done this with my ThumbnailAdapter, though I want to rewrite it sometime in the next few months.
When we scroll down (i.e., end of
list) and it shows loading and then it
loads next 10, images will load
lazily.
I have done this with my EndlessAdapter.
Perhaps these will give you some ideas.