天天看點

android AbsListView之ListView使用(2)-BaseAdapter

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


}
           

繼續閱讀