(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);