上一遍已經講解了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;
}
}