您的位置:首页 > 编程语言

BaseAdapter自定义实现代码

2014-04-23 13:55 288 查看

//自定义适配器

public class PictureAdapter extends BaseAdapter {

private LayoutInflater inflater;

private List<Picture> pictures;


public PictureAdapter(String[] titles, String[] images, Context context) {

super();

pictures = new ArrayList<Picture>();

inflater = LayoutInflater.from(context);

for (int i = 0; i < images.length; i++) {

Picture picture = new Picture(titles[i], images[i]);

pictures.add(picture);

}

}


@Override

public int getCount() {

if (null != pictures) {

return pictures.size();

} else {

return 0;

}

}


@Override

public Object getItem(int position) {

return pictures.get(position);

}


@Override

public long getItemId(int position) {

return position;

}


/**

这个convertView其实就是最关键的部分  原理上讲 当ListView滑动的过程中 会有item被滑出屏幕 而不再被使用 这时候Android会回收这个条目的view 这个view也就是这里的convertView

当item1被移除屏幕的时候 我们会重新new一个View给新显示的item_new 而如果使用了这个convertView 我们其实可以复用它 这样就省去了new View的大量开销

public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
if (convertView != null) {
view = convertView;
//复用了回收的view 只需要直接作内容填充的修改就好了
} else {
view = new Xxx(...);
//没有供复用的view 按一般的做法新建view
}
return view;
}


**/

@Override

public View getView(int position, View convertView, ViewGroup parent) {

//System.out.println("-------------getView-----------");

ViewHolder viewHolder;

if (convertView == null) {

convertView = inflater.inflate(R.layout.media_picture_item, null);

viewHolder = new ViewHolder();

viewHolder.title = (TextView) convertView.findViewById(R.id.title);

viewHolder.image = (ImageView) convertView.findViewById(R.id.image);

viewHolder.uploadStatusImage=(ImageView) convertView.findViewById(R.id.uploadStatus);

convertView.setTag(viewHolder);

} else {

viewHolder = (ViewHolder) convertView.getTag();

}

viewHolder.title.setText(pictures.get(position).getTitle());

Bitmap btMap=BitmapFactory.decodeFile(pictures.get(position).getImageId());

//btMap = ThumbnailUtils.extractThumbnail(btMap, 100, 150);

viewHolder.image.setImageBitmap(btMap);

/*if(pictures.get(position).getTitle().indexOf("+")!=-1){

viewHolder.uploadStatusImage.setImageDrawable(convertView.getResources().getDrawable(R.drawable.meida_upload_ok));

}*/

return convertView;

}


}

class ViewHolder {

public TextView title;

public ImageView image;

public ImageView uploadStatusImage;

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