上一遍已经讲解了List的SimpleAdapter的使用,本次主要讲解BaseAdapter的使用,故不再给出MainActivity的代码
(其实我个人认为,作为初学者,要多学会自己思考和写代码,不能只看别人代码和抄别人代码,代码是死的,重要的是要在学习过程中培养自己的编程思想,学会思考和解决问题)
import java.text.DecimalFormat;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.lb.shop.activity.R;
import com.lb.shop.commom.MoneyHelper;
import com.lb.shop.model.Tuan;
public class LikeAdapter extends BaseAdapter {
private Context context; //上下文对象
private List<Tuan> list; //集合对象
private ViewHolder holder; //静态类、用于保存组件
public LikeAdapter(Context context, List<Tuan> list) {
this.context = context;
this.list = list;
}
//返回数组的长度
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
//获取列表项
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return list.get(position);
}
//获取列表ID
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(
R.layout.groupbuy_list, null);
holder = new ViewHolder();
holder.img = (ImageView) convertView.findViewById(R.id.like_img);
holder.brand_name = (TextView) convertView
.findViewById(R.id.like_brand_name);
holder.short_title = (TextView) convertView
.findViewById(R.id.like_short_title);
holder.groupon_price = (TextView) convertView
.findViewById(R.id.like_groupon_price);
holder.market_price = (TextView) convertView
.findViewById(R.id.like_market_price);
holder.sale_count = (TextView) convertView
.findViewById(R.id.like_sale_count);
convertView.setTag(holder);// 暂存组件
} else {
// 找回组件
holder = (ViewHolder) convertView.getTag();
}
Tuan tuan = list.get(position);
holder.brand_name.setText(tuan.getBrand_name());
holder.short_title.setText(tuan.getShort_title());
holder.groupon_price.setText(String.format("¥%s", MoneyHelper.formatMoney(tuan.getGroupon_price())));
holder.market_price.setText(MoneyHelper.formatMoney(tuan.getMarket_price()));
holder.sale_count.setText(String.format("已售%s", tuan.getSale_count()));
holder.img.setImageBitmap(tuan.getImage());
return convertView;
}
/****
* 通过convertView+ViewHolder来实现,ViewHolder就是一个静态类,使用 ViewHolder
* 的关键好处是缓存了显示数据的视图(View),加快了 UI 的响应速度。
* */
static class ViewHolder {
ImageView img;
TextView brand_name;
TextView short_title;
TextView groupon_price;
TextView market_price;
TextView sale_count;
}
}