private void initimageloader() {
options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.yunshi_list_item_waitingbg)
.showImageForEmptyUri(R.drawable.yunshi_list_item_waitingbg)
.showImageOnFail(R.drawable.yunshi_list_item_waitingbg)
.cacheInMemory(true)
.cacheOnDisc(true)
.displayer(new RoundedBitmapDisplayer(20))
.build();
}
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();
}
@Override
public int getCount() {
return mconfiguration.getTable() != null ? mconfiguration
.getTable().size() : 0;
}
@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()
+ "......");
}
viewHolder.image.setTag(mconfiguration.getTable().get(position)
.getImageurl());
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);
}
}
}
}