Android――繼承SimpleAdapter重寫自己的getView
來源:程序員人生 發布時間:2016-04-23 09:23:43 閱讀次數:2515次
在上篇Android――ListView實現簡單列表 中,利用SimpleAdapter實現了簡單的列表綁定。在本文中,主要是通太重寫getView方法,來看下adapter內部綁定數據大致是個甚么流程。
首先加入實現類:
class mTestAdapter extends SimpleAdapter {
private Context context; /*運行環境*/
ArrayList<HashMap<String, String>> listItem; /*數據源*/
private LayoutInflater listContainer; // 視圖容器
class ListItemView { // 自定義控件集合
public TextView txtName;
}
/*construction function*/
public mTestAdapter(Context context,
ArrayList<HashMap<String, String>> data, int resource,
String[] from, int[] to) {
super(context, data, resource, from, to);
this.listContainer = LayoutInflater.from(context); // 創建視圖容器并設置上下文
this.context=context;
listItem=data;
}
/**
* @see android.widget.Adapter#getCount()
*/
public int getCount() {
return listItem.size();
}
/**
* @see android.widget.Adapter#getItem(int)
*/
public Object getItem(int position) {
return listItem.get(position);
}
/**
* @see android.widget.Adapter#getItemId(int)
*/
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final int mPosition = position;
ListItemView listItemView = null;
if (convertView == null) {
convertView = listContainer.inflate(R.layout.listview_item, null);//加載布局
listItemView = new ListItemView();
/*初始化控件容器集合*/
listItemView.txtName=(TextView) convertView
.findViewById(R.id.name);
// 設置控件集到convertView
convertView.setTag(listItemView);
}else{
listItemView=(ListItemView)convertView.getTag();//利用緩存的View
}
/*
* PS:
* 這里放入對控件的屬性及事件進行初始化設置的操作
* */
/*TextView設置點擊事件*/
listItemView.txtName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "點擊了"+mPosition, Toast.LENGTH_SHORT).show();
}
});
//設置text的值(用position標記來看的更清楚點兒)
listItemView.txtName.
setText(mPosition+" "+listItem.get(mPosition).get("ItemName"));
return convertView;
}
}
}
我們用這個實現類來取代我們之前用的SimpleAdapter.
mTestAdapter listItemAdapter=new mTestAdapter(getBaseContext(),/*指明了SimpleAdapter關聯的View的運行環境,也就是當前的Activity*/
listItem,/*由Map組成的List,在List中的每條目對應ListView的1行,每個Map中包括的就是所有在from參數中指定的key*/
R.layout.listview_item,/*定義列表項的布局文件的資源ID,該資源文件最少應當包括在to參數中定義的ID*/
new String[]{"ItemName"},/*將被添加到Map映照上的Key*/
new int[] {R.id.name}/*將綁定數據的視圖的Id跟from參數對應,這些被綁定的視圖元素應當全是TextView*/
);
//設置適配器
以后,run下,看看我們加的toast:
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈