BaseAdapter:是所有适配器类的父类,可以对列表项进行最大限度的定制
public class MyBaseAdapter extends BaseAdapter{
public class ViewHolder{
ImageView image;
TextView title;
TextView author;
TextView price;
TextView publish;
TextView remark;
}
//布局解析器
private LayoutInflater inflater;
public MyBaseAdapter(LayoutInflater inflater) {
this.inflater = inflater;
}
//BaseAdapter中需要重写的方法
@Override
public int getCount() {//获得数据的总条数
return data.size();
}
@Override
public Object getItem(int position) {
return data.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
ViewHolder viewHolder = new ViewHolder();
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//项资源 父组件
//可见的视图 convertView被覆盖的视图
View v = convertView;
//减少视图的创建
if(v == null){
//解析项资源
v = inflater.inflate(R.layout.listview_item,null);
//可见的视图的所有控件
viewHolder.image = v.findViewById(R.id.iv_listviewitem_image);
viewHolder.title = v.findViewById(R.id.tv_listviewitme_title);
viewHolder.author = v.findViewById(R.id.tv_listviewitme_author);
viewHolder.price = v.findViewById(R.id.tv_listviewitme_price);
viewHolder.publish = v.findViewById(R.id.tv_listviewitme_publish);
viewHolder.remark = v.findViewById(R.id.tv_listviewitme_remark);
//保存控件
v.setTag(viewHolder);
}
ViewHolder viewHolder = (ViewHolder) v.getTag();
//给控件设置值
Book book = data.get(position);
viewHolder.image.setImageResource(book.getImage());
viewHolder.title.setText(book.getTitle());
viewHolder.author.setText(book.getAuthor());
viewHolder.price.setText(book.getPrice()+"");//float转换成string
viewHolder.publish.setText(book.getPublish());
viewHolder.remark.setText(book.getRemark());
//返回视图
return v;
}
}