How to make background thread for loading image in android ,gallery widget

I want to read images from URL and show it in android gallery widget. so I wrote below code in onCreate() method . list = GuideDAO.getAllImages(businessId); Gallery g = (Gallery) findViewById(R.id.gallery); g.setSpacing(2); // Set the adapter to our custom adapter (below) if(list.size() > 0) { g.setAdapter(new ImageAdapter(this,list)); } This is my ImageAdapter public class ImageAdapter extends BaseAdapter { List glist = null; private String url; public ImageAdapter(Context c,List lst) { mContext = c; glist = lst; int i=0; for (Images id : glist) { url = id.getImageURL(); // Getting URL InputStream inStream = null; if (url.startsWith("http")) { url = url.replace(" ", "%20"); HttpURLConnection conn; try { conn = (HttpURLConnection)new URL(url).openConnection(); conn.setDoInput(true); conn.connect(); inStream = conn.getInputStream(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } else { try { inStream = new FileInputStream(url); } catch (FileNotFoundException e) { e.printStackTrace(); } } BitmapFactory.Options options = new BitmapFactory.Options(); options.inPreferredConfig = Bitmap.Config.RGB_565; options.inPurgeable = true; Bitmap b = BitmapFactory.decodeStream(inStream, null, options); mImageCollection[i]=b; i++; } } public int getCount() { return mImageIds.length; } public Object getItem(int position) { return position; } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { ImageView i = new ImageView(mContext); i.setImageBitmap(mImageCollection[position]); i.setScaleType(ImageView.ScaleType.FIT_XY); i.setLayoutParams(new Gallery.LayoutParams(136, 88)); return i; } private Context mContext; private String[] mImageURLs = {}; private Bitmap[] mImageCollection = {}; } This throw error because it not in Thread. How can I change this code so that URL reading and image loads in background? So I have changed my ImageAdapter by using SmartImageView , which handles background thread and caching. public class ImageAdapter extends BaseAdapter { List glist = null; private String url; public ImageAdapter(Context c,List lst) { mContext = c; glist = lst; int i=0; al = new ArrayList(); for (ImageGallery id : glist) { al.add(id.getImageURL()); } } public int getCount() { return mImageIds.length; } public Object getItem(int position) { return position; } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { Log.d("deepak", "getview gallery"); SmartImageView i = new SmartImageView(mContext); i.setImageUrl(al.get(position)); i.setScaleType(ImageView.ScaleType.FIT_XY); i.setLayoutParams(new Gallery.LayoutParams(136, 88)); return i; } private Context mContext; private String[] mImageURLs = {}; private ArrayList al; private Bitmap[] mImageCollection = {}; private Integer[] mImageIds = {}; } But my getView() is not getting called now.

以上就是How to make background thread for loading image in android ,gallery widget的详细内容,更多请关注web前端其它相关文章!

赞(0) 打赏
未经允许不得转载:web前端首页 » JavaScript 答疑

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

前端开发相关广告投放 更专业 更精准

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏