Я использовал этот класс для загрузки изображения с сервера
Надеюсь, это поможет вам ... !! Когда вы получили список URL-адресов изображений с вашего сервера или любого другого источника, используйте его для загрузки этого конкретного изображения.
GetImage.downloadFile("pictures/file83915.jpg", new ImageDownloaded()
{
@Override
public void imageDownloaded(Bitmap result){
image.setImageBitmap(result);
}
@Override
public void imageDownloadedFailed(){
}
});
Где класс GetImage:
public class GetImage
{
public static void downloadFile(final String fileUrl, final ImageDownloaded img)
{
AsyncTask<String , Void, Bitmap> task = new AsyncTask<String , Void, Bitmap>()
{
@Override
protected Bitmap doInBackground(String... params) {
Bitmap bmImg;
URL myFileUrl =null;
if(fileUrl.equals(""))
{
return null;
}
try
{
myFileUrl= new URL("http://yourURl/" +fileUrl.replace(" ", "%20"));
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
try
{
HttpURLConnection conn= (HttpURLConnection)myFileUrl.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
bmImg = BitmapFactory.decodeStream(is);
return bmImg;
}
catch (IOException e)
{
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Bitmap results)
{
if(results != null)
img.imageDownloaded(results);
else
img.imageDownloadedFailed();
}
};
task.execute("");
}
public static abstract class ImageDownloaded
{
public abstract void imageDownloaded(Bitmap result);
public abstract void imageDownloadedFailed();
}
}
Я использовал класс CustomAdapter
для отображения данных в списке с изображениями, подобными этим.
в методе getView()
я использовал эту тему вот так.
public View getView(params....)
{
View row ;//Inflataion blah blah
Bitmap thumb = myCustomObject.getBitmap();
final ImageView image = (ImageView) row.findViewById(R.id.image);
if(thumb == null)
{
GetImage.downloadFile(myCustomObject.getImagePath(), new ImageDownloaded()
{
@Override
public void imageDownloaded(Bitmap result){
myCustomObject.setBmp(result);
image.setImageBitmap(myCustomObject.getBitmap());
}
@Override
public void imageDownloadedFailed(){
}
});
}
else
image.setImageBitmap(thumb);
}
MyCustomObject
- это мой class
, который инкапсулирует данные с сервера, а также изображение с сервера и implements Parcelable interface
. Сначала я получаю данные через JSON
, а затем получаю изображение в Adapter
. Он также может быть передан любому DetailActivity