Bitmap 的图片加载

来源:互联网 发布:爱情电影推荐知乎 编辑:程序博客网 时间:2024/06/03 23:50
 private List<Result.DataBean> data;
    private Context context;


    private DisplayImageOptions options;


    public MyLvAdapter(List<Result.DataBean> data, Context context) {
        this.data = data;
        this.context = context;


        //第二步
        options=new DisplayImageOptions.Builder()
                .cacheInMemory(true)//使用内存缓存
                .cacheOnDisk(true)//使用磁盘缓存
                .showImageOnLoading(R.mipmap.ic_launcher)//设置正在下载的图片
                .showImageForEmptyUri(R.mipmap.ic_launcher)//url为空或请求的资源不存在时
                .showImageOnFail(R.mipmap.ic_launcher)//下载失败时显示的图片
                .bitmapConfig(Bitmap.Config.RGB_565)//设置图片色彩模式
                .imageScaleType(ImageScaleType.EXACTLY)//设置图片的缩放模式
                .build();
    }


    @Override
    public int getCount() {
        return data.size();
    }


    @Override
    public Object getItem(int i) {
        return null;
    }


    @Override
    public long getItemId(int i) {
        return 0;
    }


    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        ViewHolder holder;
        if(view==null){
            view=View.inflate(context, R.layout.item,null);
            holder=new ViewHolder();
            holder.img=view.findViewById(R.id.img);
            holder.tvTitle=view.findViewById(R.id.tv_title);
            holder.tvPrice=view.findViewById(R.id.tv_price);


            view.setTag(holder);
        }else{
            holder=(ViewHolder) view.getTag();
        }


        holder.tvTitle.setText(data.get(i).getTitle());
        holder.tvPrice.setText("¥"+data.get(i).getPrice());


        //分隔字符串
        String picPath=data.get(i).getImages();
        Log.d("zzz",picPath);
        //竖线在正则表达式中是特殊字符,需要转义,也就是("\|"),
        //右斜杠也是特殊字符,也需要转义,则应该是("\\|")
        String[] pics = picPath.split("\\|");
        Log.d("zzz",pics[0]);


//        MyPicTask task=new MyPicTask(holder.img);
//        task.execute(pics[0]);


        //第三步:加载图片
        ImageLoader.getInstance().displayImage(pics[0],holder.img,options);






        return view;
    }


    class ViewHolder{
        ImageView img;
        TextView tvTitle;
        TextView tvPrice;
    }


    class MyPicTask extends AsyncTask<String,Void,Bitmap>{


        private ImageView img;


        public MyPicTask(ImageView img) {
            this.img = img;
        }


        @Override
        protected Bitmap doInBackground(String... strings) {
            try {
                URL url=new URL(strings[0]);
                HttpURLConnection urlConnection =(HttpURLConnection) url.openConnection();


                urlConnection.setRequestMethod("GET");
                urlConnection.setReadTimeout(5000);
                urlConnection.setConnectTimeout(5000);


                if(urlConnection.getResponseCode()==200) {
                    InputStream inputStream = urlConnection.getInputStream();


                    Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
                    return  bitmap;


                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }


        @Override
        protected void onPostExecute(Bitmap bitmap) {
            super.onPostExecute(bitmap);
            img.setImageBitmap(bitmap);


        }
    }
}
原创粉丝点击