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;
}
/**
**/
@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;
}
//自定义适配器
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;
}
相关文章推荐
- android自定义BaseAdapter,实现从网络加载包含图片的listview
- BaseRecyclerViewAdapterHelper开源项目之BaseQuickAdapter源码学习上拉加载的实现代码(三)
- 使用自定义的BaseAdapter实现LIstView的展示
- 基于抽象布局和炒鸡牛鼻adapter写的base下拉刷新功能,只需要一点点代码,就实现了不同数据的下拉刷新
- BaseRecyclerViewAdapterHelper开源项目之BaseQuickAdapter源码学习BaseViewHolder扩展功能的实现代码学习(四)
- 自定义的BaseAdapter实现LIstView的展示
- 三处代码实现Adapter加载动画,还可自定义动画效果
- 使用自定义的BaseAdapter实现LIstView的展示
- 使用自定义的BaseAdapter实现LIstView的展示(转)
- BaseRecyclerViewAdapterHelper开源项目之BaseQuickAdapter源码学习上拉加载的实现代码(三)
- Android自定义实现BaseAdapter的普通实现
- 使用自定义的BaseAdapter实现LIstView的展示
- 使用自定义的BaseAdapter实现LIstView的展示
- BaseRecyclerViewAdapterHelper开源项目之BaseQuickAdapter源码学习BaseViewHolder扩展功能的实现代码学习(四)
- 一句代码实现ListView图文加载的万能适配器BaseListViewAdapter<T>
- Android之自定义实现BaseAdapter(普通实现)
- 使用自定义的BaseAdapter实现 onitemclickListener
- 使用自定义的BaseAdapter实现LIstView的展示
- 使用自定义的BaseAdapter实现LIstView的展示
- 三处代码实现Adapter加载动画,还可自定义动画效果