(4.3.1.8)【项目一】子fragment之imageloader
2015-07-17 14:40
246 查看
private void initimageloader() { // imageLoader.init(ImageLoaderConfiguration.createDefault(mActivity)); // TODO Auto-generated method stub // 使用DisplayImageOptions.Builder()创建DisplayImageOptions options = new DisplayImageOptions.Builder() .showStubImage(R.drawable.yunshi_list_item_waitingbg) // 设置图片下载期间显示的图片 .showImageForEmptyUri(R.drawable.yunshi_list_item_waitingbg) // 设置图片Uri为空或是错误的时候显示的图片 .showImageOnFail(R.drawable.yunshi_list_item_waitingbg) // 设置图片加载或解码过程中发生错误显示的图片 .cacheInMemory(true) // 设置下载的图片是否缓存在内存中 .cacheOnDisc(true) // 设置下载的图片是否缓存在SD卡中 .displayer(new RoundedBitmapDisplayer(20)) // 设置成圆角图片 .build(); // 创建配置过得DisplayImageOption对象 }
// view的自定义适配器,获取服务器图片,控制显示,和数据 class MyListViewAdapter extends BaseAdapter { private Activity mContext; private LayoutInflater inflater; private ImageLoadingListener animateFirstListener = new AnimateFirstDisplayListener(); private ArticleList mconfiguration;// 文章简介列表项 final int TYPE_1 = 1; final int TYPE_2 = 2; public MyListViewAdapter(Activity context) { mContext = context; inflater = LayoutInflater.from(mContext); } public void addItem(ArticleList configuration) {// 注入要显示的文章简介列表对象 mconfiguration = configuration; notifyDataSetChanged();// 在修改适配器绑定的数组后,不用重新刷新Activity,通知Activity更新ListView } @Override public int getCount() { return mconfiguration.getTable() != null ? mconfiguration .getTable().size() : 0; } // 每个convert view都会调用此方法,获得当前所需要的view样式 @Override public int getItemViewType(int position) { int p = position; if (p==0) { isfirstshow = false; return TYPE_2; } else return TYPE_1; } @Override public Object getItem(int position) { return mconfiguration.getTable() != null ? mconfiguration .getTable().get(position) : 0; } @Override public long getItemId(int position) { return position; } // 数据的显示,单个列表的显示 @Override public View getView( int position, View convertView, ViewGroup arg2) { Log.d("lilin", "getView== " + position); int type = getItemViewType(position); ViewHolder viewHolder;// 控件簇 ViewHolder holder1 = null; ViewHolder holder2 = null; if (convertView == null) { switch (type) { case TYPE_1: convertView = inflater.inflate( R.layout.yunshi_list_item_small, null); holder1 = new ViewHolder(); holder1.title = (TextView) convertView .findViewById(R.id.textView); holder1.textContent = (TextView) convertView .findViewById(R.id.textViewContent); holder1.image = (ImageView) convertView .findViewById(R.id.imageView); convertView.setTag(holder1); break; case TYPE_2: convertView = inflater.inflate( R.layout.yunshi_list_item_big, null); holder2 = new ViewHolder(); holder2.title = (TextView) convertView .findViewById(R.id.textView); holder2.textContent = (TextView) convertView .findViewById(R.id.textViewContent); holder2.image = (ImageView) convertView .findViewById(R.id.imageView); convertView.setTag(holder2); break; default: break; } } else { switch (type) { case TYPE_1: holder1 = (ViewHolder) convertView.getTag(); break; case TYPE_2: holder2 = (ViewHolder) convertView.getTag(); break; } } switch (type) { case TYPE_1: viewHolder = holder1; break; case TYPE_2: viewHolder = holder2; break; default: viewHolder = holder1; break; } // 列表项注入获取数据的标题 viewHolder.title.setText(mconfiguration.getTable().get(position) .getTitle().trim()); TextPaint tp = viewHolder.title.getPaint(); tp.setFakeBoldText(true); // 判断文章简介是否过长,截取显示 if (mconfiguration.getTable().get(position).getContent().length() > 10) { viewHolder.textContent.setText(mconfiguration.getTable() .get(position).getContent().substring(0, 10) + "......"); } else { viewHolder.textContent.setText(mconfiguration.getTable() .get(position).getContent() + "......"); } // 判断是否有图片信息,00表示没有图片 viewHolder.image.setTag(mconfiguration.getTable().get(position) .getImageurl());// 给image控件设置tag if (!mconfiguration.getTable().get(position).getImageurl() .equals("00")) {// 有图片 viewHolder.image.setVisibility(View.VISIBLE);// 显示图片栏 /** * 显示图片 参数1:图片url 参数2:显示图片的控件 参数3:显示图片的设置 参数4:监听器 */ imageLoader.displayImage(mconfiguration.getTable() .get(position).getImageurl(), viewHolder.image, options, animateFirstListener); } else {// 没有图片 viewHolder.image.setVisibility(View.GONE); } return convertView; } } class ViewHolder { public TextView title;// 标题 public TextView textContent;// 简介 public ImageView image;// 图片 } /** * 图片加载第一次显示监听器 * * @author Administrator * */ private static class AnimateFirstDisplayListener extends SimpleImageLoadingListener { static final List<String> displayedImages = Collections .synchronizedList(new LinkedList<String>()); @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { if (loadedImage != null) { ImageView imageView = (ImageView) view; // 是否第一次显示 boolean firstDisplay = !displayedImages.contains(imageUri); if (firstDisplay) { // 图片淡入效果 FadeInBitmapDisplayer.animate(imageView, 500); displayedImages.add(imageUri); } } } }
相关文章推荐
- Python: Convert UTC time-tuple to UTC timestamp
- 约数之和
- WebSocket使用中碰到的问题以及解决方法
- linux 任务管理器
- Android 使用SpannableString显示复合文本
- Linux查看目录挂载点
- 查看网络图片
- Python的Django框架中设置日期和字段可选的方法
- GRE写作必备句型
- 安卓开发笔记——关于图片的三级缓存策略(内存LruCache+磁盘DiskLruCache+网络Volley)
- Swagger+Spring MVC框架学习分享
- Android搭建本地服务
- thread
- ElasticSearch
- Android中Listview(六)--索引ListView
- Lithium做进制转换
- oracle建表带 表注释,字段注释的写法
- QSqlQuery::value: not positioned on a valid record
- 微软开业网站----精华 http://www.microsoft.com/opensource/directory.aspx
- struts2 脱离配置文件 全注解配置