android simpleadapter 继承,Android——继承SimpleAdapter重写自己的getView

在上篇Android——ListView实现简单列表 中,利用SimpleAdapter实现了简单的列表绑定。在本文中,主要是通过重写getView方法,来看下adapter内部绑定数据大致是个什么流程。

首先加入实现类:

class mTestAdapter extends SimpleAdapter {

private Context context; /*运行环境*/

ArrayList> listItem; /*数据源*/

private LayoutInflater listContainer; // 视图容器

class ListItemView { // 自定义控件集合

public TextView txtName;

}

/*construction function*/

public mTestAdapter(Context context,

ArrayList> 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的一行,每一个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:

BMzMzFz0tuFgZmbm6LbhYGZm5ui24WBmZubotuFgZmbm6LbhYGZm5ui24WBmZubovrnhCGittdZaj3vbcDAzM3N0l+RuEH6stdZaaz3ubcPBzMzM0e0ZDq211lpHbxsOZmZmju6bz3AAAABEwoaDmZmZo9uGAwAARMeGg5mZmaPbhgMAAETHhoOZmZmj24YDAABEZ2TgCNOH1lprrXWMtuEAAADRKSmc2UdrrbXWxdo2HAAAIDqe4dBaa6119LbhAAAA0TFwAACA6Bg4AABAdAwcAAAgOgYOAAAQHQMHAACIjoEDAABEx8ABAACiY+AAAADRMXAAAIDoGDgAAEB0DBwAACA6Bg4AABAdAwcAAIiOgQMAAETHwAEAAKJj4AAAANExcAAAgOgYOAAAQHQMHAAAIDoGDgAAEB0DBwAAiI6BAwAARMfAAQAAomPgAAAA0TFwAACA6Bg4AABAdAwcAAAgOgYOAAAQnf8HghSd0FXBi5IAAAAASUVORK5CYII=

发现点击事件加上了,而且通过position,很容易区分我们当前到底操作的时候那个item,并可以针对这个Item进行有针对的操作。尤其是当item上面有button的时候,重写Adapter就显得比较简单了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

原文:http://blog.csdn.net/lhc1105/article/details/49330227

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值