现在的位置: 首页 > 综合 > 正文

android listview加载网络图片

2013年09月03日 ⁄ 综合 ⁄ 共 9380字 ⁄ 字号 评论关闭

基本方法:

void loadPictrue(){
		  try {
			    byte[] data = GetImageForNet.getImage(path);
			    String d = new String(data);
			  
			    int length = data.length;
			    Bitmap bitMap = BitmapFactory.decodeByteArray(data, 0, length);
			    imageView.setImageBitmap(bitMap);
			 			    
			} catch (Exception e) {
			//	Log.i(TAG, e.toString());
			//	Toast.makeText(DataActivity.this, "获取图片失败", 1).show();
			}

	}

 public static byte[] getImage(String path) throws Exception {
		URL url = new URL(path);
		HttpURLConnection httpURLconnection =  (HttpURLConnection)url.openConnection();
		httpURLconnection.setRequestMethod("GET");
		httpURLconnection.setReadTimeout(6*1000);
		InputStream in = null;
		byte[] b = new byte[1024];
		int len = -1;
		if (httpURLconnection.getResponseCode() == 200) {
			 in = httpURLconnection.getInputStream();
			 byte[] result = readStream(in);
			 in.close();
			 return result;
			 
		}
		return null;
	}
	
	public static byte[] readStream(InputStream in) throws Exception{
		ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
		byte[] buffer = new byte[1024];
		int len = -1;
		while((len = in.read(buffer)) != -1) {
			outputStream.write(buffer, 0, len);
		}
		outputStream.close();
		in.close();
		return outputStream.toByteArray();
	}

应用实例:

效果图:

package com.sample.fun;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.sample.tools.Tool;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.SimpleAdapter;
import android.widget.TextView;

public class PPTLoad extends Activity {

	ListView mListView = null;  
    List<Map<String,Object>> mData= new ArrayList<Map<String,Object>>();
    private String[] titles = {"��f��","����","����","�����","������"}; 
    private String[] infos = {"ww1","ww2","ww3","w4","w5"}; 
    private String[] paths = {"http://list.image.baidu.com/t/image_category/galleryimg/menstar/hk/wang_li_hong.jpg", 
            "http://list.image.baidu.com/t/image_category/galleryimg/menstar/hk/wu_zun.jpg", 
            "http://list.image.baidu.com/t/image_category/galleryimg/menstar/hk/he_run_dong.jpg", 
            "http://list.image.baidu.com/t/image_category/galleryimg/menstar/hk/jin_cheng_wu.jpg", 
            "http://list.image.baidu.com/t/image_category/galleryimg/menstar/hk/wu_yan_zu.jpg",
            "http://t3.baidu.com/it/u=755374211,3445834761&fm=21&gp=0.jpg",
            "http://t1.baidu.com/it/u=3723968736,667273267&fm=21&gp=0.jpg",
            "http://t3.baidu.com/it/u=450937786,2820844387&fm=21&gp=0.jpg",
            "http://t2.baidu.com/it/u=3310624697,1755806991&fm=21&gp=0.jpg",
            "http://down.tutu001.com/d/file/20110315/1b036918fa58fae13cf625bd40_560.jpg",
            "http://t2.baidu.com/it/u=2525751618,3563581769&fm=21&gp=0.jpg",
            "http://t1.baidu.com/it/u=2298155874,1881401445&fm=21&gp=0.jpg",
            "http://t3.baidu.com/it/u=1403032584,1700698811&fm=21&gp=0.jpg",
            "http://t1.baidu.com/it/u=2532175015,2728227933&fm=21&gp=0.jpg",
            "http://t2.baidu.com/it/u=2297216674,2102514028&fm=21&gp=0.jpg",
            "http://t2.baidu.com/it/u=2698839426,2064924179&fm=21&gp=0.jpg",
            "http://t3.baidu.com/it/u=1799912067,1926213209&fm=21&gp=0.jpg",
            "http://t3.baidu.com/it/u=1204591528,144523060&fm=21&gp=0.jpg",
            "http://t1.baidu.com/it/u=2562853530,2288153626&fm=21&gp=0.jpg",
            "http://t1.baidu.com/it/u=3979343889,4211958307&fm=21&gp=0.jpg",
            "http://t3.baidu.com/it/u=2166483555,3083761236&fm=21&gp=0.jpg",
            "http://t2.baidu.com/it/u=2492116836,1113873934&fm=21&gp=0.jpg",
            "http://t1.baidu.com/it/u=1767705907,1330856669&fm=21&gp=0.jpg",
            "http://img12.3lian.com/gaoqing02/02/48/04.jpg",
            "http://img1.she.thirsight.com/files/tsd/styles/large/public/201204/20/13349014345346.jpg",
            "http://down.tutu001.com/d/file/20110606/b4baf9234732a7ff127265ae12_560.jpg",
            "http://down.tutu001.com/d/file/20100831/c58b6b98cb5409d4ec50b58554_560.jpg",
            "http://down.tutu001.com/d/file/20100912/c63d1d4cc78479736020cd81a2_560.jpg",
            "http://t1.baidu.com/it/u=2667010967,1884025688&fm=21&gp=0.jpg",
            "http://t1.baidu.com/it/u=1532980374,2719532859&fm=21&gp=0.jpg",
            "http://t3.baidu.com/it/u=1456755524,1001384106&fm=21&gp=0.jpg",
            "http://img1.she.thirsight.com/files/tsd/styles/large/public/201205/27/13381609390113.jpg",
            "http://t2.baidu.com/it/u=3217099276,4236859882&fm=21&gp=0.jpg",
            "http://sxbctv.newhua.com/softimg/420000/410006s.jpg",
            "http://t3.baidu.com/it/u=1281775347,885390158&fm=21&gp=0.jpg",
            "http://img.sc115.com/uploads/sc/pic/130405/1364794891722.jpg",
            "http://t2.baidu.com/it/u=945900905,2852462510&fm=21&gp=0.jpg",
            "http://t1.baidu.com/it/u=1542217356,1581665397&fm=21&gp=0.jpg",
            "http://www.910club.cn/powerpoint/pptmb/UploadSoftPic/20111008/small24ee82be20e3a0d451fb7aab946d28291314864102.jpg",
            "http://t3.baidu.com/it/u=403513111,1569426262&fm=21&gp=0.jpg",
            "http://tuidc4.newhua.com/softimg/270000/261088s.jpg"
            }; 

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		
		setContentView(R.layout.activity_main);
		
		for(int i=0;i<paths.length;i++){
			Map<String, Object> hm=new HashMap<String, Object>();
			hm.put("image", paths[i]);
			hm.put("title", "name"+i);
			hm.put("info", "info"+i);
			mData.add(hm);
		}
		ImageAdapter adapter=new ImageAdapter(this, mData, R.layout.file_row,new String[] { "image","title", "info"},
				new int[] { R.id.fileImage, R.id.fileName, R.id.fileInfo});
	//	adapter.setImageUrl(urls)
		ListView fileList=(ListView)findViewById(R.id.fileList);
		fileList.setAdapter(adapter);
		
		super.onCreate(savedInstanceState);
	}
	
	@Override
	protected void onDestroy() {
		
		super.onDestroy();
	}
	
	class ImageAdapter extends SimpleAdapter{

		Map<Integer, Bitmap> images=new HashMap<Integer, Bitmap>();
	//	List<Bitmap> images=new ArrayList<Bitmap>();
	//	List<String> imageUrls=null;
		
		public ImageAdapter(Context context,List<? extends Map<String, ?>> data, int resource,
				String[] from, int[] to) {
			super(context, data, resource, from, to);
			
		}
		
		/*public void setImageUrl(List urls){
			this.imageUrls=urls;
		}*/
		
		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			View v =  super.getView(position, convertView, parent);
		  final  HashMap<String, Object> hm = (HashMap<String, Object>) super.getItem(position);
		  final  ImageView file_image = (ImageView) v.findViewById(R.id.fileImage);//Log.e("msg", "widget= "+v.findViewById(R.id.pro));
		  final ProgressBar progress = (ProgressBar) v.findViewById(R.id.pro);
		  final  TextView file_name = (TextView) v.findViewById(R.id.fileName);
		  final TextView file_info = (TextView) v.findViewById(R.id.fileInfo);
		//  final String imageurl = imageUrls.get(position);
		    /*final String imageurl = imageUrls.get(position);
		    LayoutInflater inflate = LayoutInflater.from(context);
		    View v = inflate.inflate(rowResId, parent, false);
		    final ImageView image = (ImageView) v.findViewById(R.id.image);*/
		//    final ProgressBar progress = (ProgressBar) v.findViewById(R.id.pro);
		    
		    if(images.get(position) != null) {
		         progress.setVisibility(View.GONE);
		         file_image.setImageBitmap(images.get(position));
		         file_image.setVisibility(View.VISIBLE);
		         file_name.setText(hm.get("title").toString());
		         file_info.setText(hm.get("info").toString());
		    } else {
		    	file_image.setVisibility(View.GONE);
		         progress.setVisibility(View.VISIBLE);
		         final int pos=position;
		         final Handler handler = new Handler() {
		             @Override
		             public void handleMessage(Message message) {
		                 /* System.out.println("Set image at" + pos
		                    + " Image Name :: " + imageurl);*/
		                  progress.setVisibility(View.GONE);
		                  file_image.setImageBitmap((Bitmap) message.obj);
		                  file_image.setVisibility(View.VISIBLE);
		                  file_name.setText(hm.get("title").toString());
		 		         file_info.setText(hm.get("info").toString());
		             }
		         };

		         Thread thread = new Thread() {
		         @Override
		            public void run() {
		               Bitmap drawable = LoadImageFromWebOperations(hm.get("image").toString());
		               images.put(pos, drawable);
		               Message message = handler.obtainMessage(1, drawable);
		               handler.sendMessage(message);
		            }
		         };
		         thread.start();
		    }
		    return v;
		}
		
		private Bitmap LoadImageFromWebOperations(String imageurl) {
			byte[] data=getImage(imageurl);
			Bitmap image=BitmapFactory.decodeByteArray(data, 0, data.length);
			return image;
		}
		
		public byte[] getImage(String path){
			URL url=null;
			try {
				url = new URL(path);
			} catch (MalformedURLException e2) {
				e2.printStackTrace();
				Log.e(getClass().getName(), Tool.getExceptionMessage(e2));
			}
			HttpURLConnection httpURLconnection=null;
			try {
				httpURLconnection = (HttpURLConnection)url.openConnection();
				httpURLconnection.setRequestMethod("GET");
				httpURLconnection.setReadTimeout(6*1000);
			} catch (IOException e1) {
				e1.printStackTrace();
				Log.e(getClass().getName(), Tool.getExceptionMessage(e1));
			}
			
			InputStream in = null;
			byte[] result=null;
			
			try{
				if (httpURLconnection.getResponseCode() == 200) {
					 in = httpURLconnection.getInputStream();
					 result = readStream(in);
					 in.close();
				}
			}catch(IOException e){
				e.printStackTrace();
				Log.e(getClass().getName(), Tool.getExceptionMessage(e));
			}
			return result;
		}
		
		public byte[] readStream(InputStream in){
			ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
			byte[] buffer = new byte[1024];
			int len = -1;
			try{
				while((len = in.read(buffer)) != -1) {
					outputStream.write(buffer, 0, len);
				}
				outputStream.close();
				in.close();
			}catch(IOException e){
				e.printStackTrace();
				Log.e(getClass().getName(), Tool.getExceptionMessage(e));
			}
			return outputStream.toByteArray();
		}
	}
	
}

相关权限:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
    	<uses-permission android:name = "android.permission.INTERNET"/>
		<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
		<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

附加listview优化相关文章

 ListView中getView的原理+如何在ListView中放置多个item 
    http://www.cnblogs.com/xiaowenji/archive/2010/12/08/1900579.html 
    Android开发之ListView适配器(Adapter)优化 
    http://shinfocom.iteye.com/blog/1231511 

抱歉!评论已关闭.