android listview异步加载图片问题分析解决方案

来源:互联网 发布:陈奕迅 好唱 知乎 编辑:程序博客网 时间:2024/06/11 16:53

今天讲讲listview异步加载图片,以及发生的一些问题并提供解决方案!


先写一个listview加载图片的demo,就2个类,

MainActivity.java



<span style="font-size:24px;">public class MainActivity extends Activity {private static final String TAG = "MainActivity";private List<String>  datas;private LayoutInflater inflater;private Context context;private MyAdapter adapter;private ListView listview;private List<String> imgUrls;private List<TextView> list = new ArrayList<TextView>();private List<String> sortUrl = new ArrayList<String>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);inflater = LayoutInflater.from(this);context = MainActivity.this;listview = (ListView) findViewById(R.id.listview);initData();adapter= new MyAdapter();listview.setAdapter(adapter);}private void initData() {imgUrls = new ArrayList<String>();imgUrls.add("http://img5.douban.com/view/movie_poster_cover/mpst/public/p2199507156.jpg");imgUrls.add("http://img5.douban.com/lpic/s27397768.jpg");imgUrls.add("http://img3.douban.com/lpic/s27505695.jpg");imgUrls.add("http://img3.douban.com/lpic/s27461340.jpg");imgUrls.add("http://img3.douban.com/lpic/s27451442.jpg");imgUrls.add("http://img5.douban.com/lpic/s27453059.jpg");imgUrls.add("http://img3.douban.com/lpic/s27452925.jpg");imgUrls.add("http://img5.douban.com/lpic/s27452846.jpg");imgUrls.add("http://img3.douban.com/lpic/s27325332.jpg");imgUrls.add("http://img3.douban.com/lpic/s27325315.jpg");imgUrls.add("http://img5.douban.com/lpic/s27389537.jpg");imgUrls.add("http://img3.douban.com/view/movie_poster_cover/mpst/public/p2199638985.jpg");imgUrls.add("http://img3.douban.com/view/movie_poster_cover/mpst/public/p2199637691.jpg");imgUrls.add("http://img5.douban.com/view/movie_poster_cover/lpst/public/p2195768476.jpg");imgUrls.add("http://img5.douban.com/view/movie_poster_cover/lpst/public/p2180002996.jpg");imgUrls.add("http://img3.douban.com/view/movie_poster_cover/lpst/public/p2182978810.jpg");imgUrls.add("http://img5.douban.com/view/movie_poster_cover/lpst/public/p2164841498.jpg");imgUrls.add("http://img5.douban.com/view/movie_poster_cover/lpst/public/p2161445839.jpg");imgUrls.add("http://img5.douban.com/view/movie_poster_cover/lpst/public/p2183221886.jpg");imgUrls.add("http://img3.douban.com/view/movie_poster_cover/lpst/public/p2164383301.jpg");imgUrls.add("http://img3.douban.com/view/movie_poster_cover/lpst/public/p2199638985.jpg");imgUrls.add("http://img3.douban.com/view/movie_poster_cover/lpst/public/p2199407040.jpg");imgUrls.add("http://img3.douban.com/view/movie_poster_cover/lpst/public/p2176900061.jpg");imgUrls.add("http://img3.douban.com/view/movie_poster_cover/lpst/public/p2180405730.jpg");imgUrls.add("http://img3.douban.com/view/movie_poster_cover/lpst/public/p2197059721.jpg");imgUrls.add("http://img5.douban.com/view/movie_poster_cover/lpst/public/p2196353608.jpg");imgUrls.add("http://img5.douban.com/view/movie_poster_cover/lpst/public/p2187391526.jpg");imgUrls.add("http://img5.douban.com/view/movie_poster_cover/lpst/public/p2185073849.jpg");imgUrls.add("http://img5.douban.com/view/movie_poster_cover/lpst/public/p2196328516.jpg");imgUrls.add("http://img5.douban.com/view/movie_poster_cover/lpst/public/p2166850749.jpg");imgUrls.add("http://img3.douban.com/view/movie_poster_cover/lpst/public/p2183957412.jpg");imgUrls.add("http://img3.douban.com/spic/s27459164.jpg");imgUrls.add("http://img3.douban.com/spic/s27480483.jpg");imgUrls.add("http://img3.douban.com/spic/s27460951.jpg");imgUrls.add("http://img3.douban.com/spic/s27453772.jpg");imgUrls.add("http://img3.douban.com/spic/s27410904.jpg");imgUrls.add("http://img5.douban.com/spic/s27466008.jpg");imgUrls.add("http://img3.douban.com/spic/s3259484.jpg");imgUrls.add("http://img3.douban.com/spic/s3081692.jpg");imgUrls.add("http://img3.douban.com/spic/s1400630.jpg");imgUrls.add("http://img5.douban.com/spic/s4715377.jpg");imgUrls.add("http://img3.douban.com/spic/s6201192.jpg");imgUrls.add("http://img5.douban.com/spic/s2650727.jpg");imgUrls.add("http://img3.douban.com/spic/s3636124.jpg");imgUrls.add("http://img5.douban.com/spic/s3595798.jpg");imgUrls.add("http://img3.douban.com/spic/s27078194.jpg");imgUrls.add("http://img3.douban.com/view/event_poster/large/public/2a35a85a873e8e7.jpg");imgUrls.add("http://img3.douban.com/view/event_poster/large/public/ce66e0569742fd7.jpg");imgUrls.add("http://img3.douban.com/view/event_poster/large/public/4c44752e83900d9.jpg");imgUrls.add("http://img3.douban.com/view/event_poster/large/public/d22f7b9e5c8c92c.jpg");}class MyAdapter extends BaseAdapter{@Overridepublic int getCount() {return imgUrls.size();}@Overridepublic Object getItem(int position) {return imgUrls.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup arg2) {ViewHolder viewHolder = null;if(convertView==null){viewHolder = new ViewHolder();convertView = inflater.inflate(R.layout.item, null);viewHolder.img = (ImageView) convertView.findViewById(R.id.img);convertView.setTag(viewHolder);}else{viewHolder = (ViewHolder) convertView.getTag();}ImgTask imgTask = new ImgTask(viewHolder.img);imgTask.execute(imgUrls.get(position));return convertView;}class ViewHolder{ImageView img;}}}</span>
<span style="font-size:24px;"></span>
<span style="font-size:24px;"></span>
加载图片的类:

ImgTask.java


public class ImgTask extends AsyncTask<String, Void, Bitmap> {private ImageView iv;public ImgTask(ImageView iv){this.iv = iv;}@Overrideprotected Bitmap doInBackground(String... param) {String imgUrl = param[0];try {URL url = new URL(imgUrl);try {HttpURLConnection conn = (HttpURLConnection) url.openConnection();InputStream in = conn.getInputStream();Bitmap bitmap = BitmapFactory.decodeStream(in);if(bitmap!=null){return bitmap;}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}@Overrideprotected void onPostExecute(Bitmap result) {super.onPostExecute(result);if(result!=null){iv.setImageBitmap(result);}}@Overrideprotected void onPreExecute() {super.onPreExecute();}}



0 0
原创粉丝点击