I'm making an application that reads a bunch of images URL on a JSON string. With a new thread the app downloads the images to a specific directory. Then there is a "gallery" based on a GridView with an ImageAdapter that displays all the files. The thing is that it takes too long the first time to download all the images.
My goal is to display the images while they are downloading. Right now the user has to go back and then enter again in the gallery to view the new images. Until all the images are downloaded.
If someone has a workaround for this, let me know.
Thanks..
Once your images are downloaded call notifydatasetchanged on the adapter. This can be done either after every image or a set of images.
Edit : Assuming you are calling the thread in MainActivity and the adapter is being called in the Display Activity , you can have the downloading thread call a listener, defined in the Display activity which calls notifydatasetchanged.
Also I am hoping each image is downloaded in a separate thread :-)
Related
I have a long list of images that i need to show in to recyclerView. I am using glide to show the images from my adapter.
Glide.with(context).load(feed.getImgLink()).diskCacheStrategy(DiskCacheStrategy.NONE).into(holder.myImgView);
The above is the code am using i set the DiskCacheStrategy to none because I'm trying to show Instagram like Feed and i didn't want to permanently cache the img on disk.
The first time i see the image there is no problem it is displayed normal but after i scroll down and back up the image reload again. I get that i haven't cache the image in to disk but there is still momery cache.
Is there any way i can solve i could use diskcache to ALL but it is taking space for just one time viewing.
Try this.
Glide.with(context).load(imageUrl).into(holder.myImgView);
I want to display set the content of gridview to be as gotten from an api.
I used Ion to call in my api and saved them into a generic list of a class i.e(List list;) i used picasso to load images from a url but when set the gridviews adapter in the oncreate it doesn't show the items in the gridview when the app comes up, but when I minimise and bring it back the contents show. I need help making sure it's contents loads up with the app.
I have little problem with my Android app.
First i take a photo by a camera and save it as Bitmap. Next thing i want to do is display this image in new fragment as ImageView. I don't know how to send this photo from activity to fragment.
Could you help how to do that?
You are taking the photo in the activity, so the fastest way to figure out this problem is saving your image in cache and reading directly form its path in the fragment code.
Did you try this?
I see two solutions:
Since you are taking a picture in one Activity and want to get it in a Fragment (which has an Activity), you could put the bitmap path on bundle on the Take Picture activity (bundle.putString("bitmapPath", bitmap.getPath())) and read this bundle on the Show Picture Activity Fragment (getActivity().getExtras().get("bitmapPath")).
You could use a public static variable to keep bitmap path after you saving it.
This is more a question of application logic and performance.
Project Setup: I have an Android ListView which inflates a layout that is more aesthetically pleasing than just simple text. In each row (7 to be exact), I have an Image that is fetched by URL.
The problem: This ListView and its data are set by an ArrayList of model objects that serve as temporary data holders. When the rows are added the model objects are then used to set the data in the specific row's UI. The issue then comes along, that when a user scrolls down on the list a row that was once viewable is now out of the user's view. When the user scrolls back up to that row, the whole process of fetching the Image then happens again.
This seems like it can be avoided by instead of passing URLs through the models then fetching the images, I should fetch the images first, then pass the bitmaps to the model, therefore when the row is visible again to the user, it does not have to re-load the image.
Is there a way to write an AsyncTask that can load 7 images successfully, or do I have to create an AsyncTask object for each image?
Everytime I go this route the application crashes...
You can use Picasso library for this task.
Visit http://square.github.io/picasso/
In the adapter of your ListView, in the method getView, you can put this:
Picasso.with(context)
.load(url)
.placeholder(R.drawable.ic_launcher)
.error(R.drawable.ic_error)
.resizeDimen(R.dimen.list_detail_image_size,R.dimen.list_detail_image_size) .centerInside()
.into(imgView);
You dont need a AsyncTask because this library already implements itself.
I have a ListView, displaying some items, containing an ImageView filled with a standard image at first and a line of text.
What I wanna do is downloading one thumb after another with an AsyncTask and step for step change the standard image with the downloaded one. How to realise this?
The ListView contents are managed by an enhanced ArrayAdapter.
greetz
EnflamedSoul
If I understand you correctly you're interested in a LazyList. This example shows a stub for the image, then downloads some thumbnails as the user scrolls down and caches these onto an SD card. The next time the images will be loaded from the SD card.
Lazy load of images in ListView
I personally used Fedor's example and it worked well.