您的位置:首页 > 其它

(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);
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: