天天看點

BaseAdapter用法 的基本步驟

(1).建立2個XML檔案,一個是ListView控件,另一個是根據需求建立的布局檔案

(2).定義一個ListVIiew并初始化,并建立private List<Map<String, Object>> getData()這個方法來存儲ListVIiew的資料

List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

Map<String, Object> map = new HashMap<String, Object>();

map.put("title", "b1");

map.put("info", "android 1");

map.put("img", R.drawable.b1);

list.add(map);

(title,info,img是布局檔案中各個控件的ID)

(3).建立一個新的類MyAdapter繼承BaseAdapter,并 添加成員變量(Context,List)  添加構造方法 給構造方法傳一個形參(context,list)

// 上下文

// Context con;

// 源資料

List<Map<String, Object>> list;

// 把xml布局檔案轉化成View檔案所需要的類

private LayoutInflater mInflater;

public MyAdatper(Context con, List<Map<String, Object>> list) {

// this.con = con;

this.list = list;

this.mInflater = LayoutInflater.from(con);

}

(4).重寫主要方法:第一個是:getCount();表示ListVIiew裡面有多少Item(條).第二個是:public View getView(int position, View convertView, ViewGroup parent) ,在此方法中,用convertView.inflate(布局模闆,NULL)方法得到一個布局模闆的View對象(此方法是将一個XML檔案轉換成一個View對象),用此View對象得到 布局模闆中的控件對象(findViewById()方法),為了友善,我們一般建立需要建一個定義控件專門的類,通過執行個體化這個類來調用裡面的所有控件對象,在通過setXXX()這些方法來擷取各個控件的内容。

public View getView(int position, View convertView, ViewGroup parent) {

// 把布局檔案轉化成View

convertView = mInflater.inflate(R.layout.listitem, null);

// 執行個體化工具類

ViewHolder holder = new ViewHolder();

// 通過布局找到布局中的控件

holder.img = (ImageView) convertView.findViewById(R.id.img);

holder.title = (TextView) convertView.findViewById(R.id.title);

holder.info = (TextView) convertView.findViewById(R.id.info);

holder.img.setBackgroundResource((Integer) list.get(position)

.get("img"));

holder.info.setText((CharSequence) list.get(position).get("info"));

holder.title.setText((String) list.get(position).get("title"));

// 傳回布局

return convertView;

}

class ViewHolder {

ImageView img;

TextView title, info;

}

   (5).在Activity類中執行個體化擴充卡(執行個體化MyAdapter),并設定ListView的擴充卡

// 執行個體化擴充卡

myAdapter = new MyAdatper(this, getData());

// 設定ListView的擴充卡

lisrView.setAdapter(myadapter);